java - 崩溃的 GoogleWrapperSample (OpenStreetMap)

标签 java android google-maps openstreetmap

我对GoogleWrapperSample有疑问对于 OpenSteetMap (我使用 osmdroid 最新 jar - 3.0.8)。它编译得很好,但模拟器(Google API 2.2 设备)会抛出一个带有“Activity 没有响应”消息的 toast,仅此而已。没有错误/警告,因为它是 osmdroid 类中的记录器,所以我只能接收一些日志信息。 LogCat 给出如下内容:

02-14 13:21:20.246: W/System.err(968): 38 [main] INFO org.osmdroid.views.MapView - Using tile source: org.osmdroid.tileprovider.tilesource.XYTileSource@44eb5260
02-14 13:21:20.316: W/System.err(968): 113 [main] INFO org.osmdroid.tileprovider.modules.MapTileFileStorageProviderBase - sdcard state: mounted
02-14 13:21:20.336: W/System.err(968): 129 [main] INFO org.osmdroid.tileprovider.modules.MapTileFileStorageProviderBase - sdcard state: mounted
02-14 13:21:30.166: I/dalvikvm(968): threadid=3: reacting to signal 3
02-14 13:21:30.207: I/dalvikvm(968): Wrote stack traces to '/data/anr/traces.txt'

有人让这个示例工作吗?我不知道如何解决这个问题。

也许,它以某种方式与通过网络获取 OSM 图 block 或类似的东西有关 - 我们有代理连接,因此 https 和 SSL 端口不可用(但设备上的所有网络都可以)。

UPD。
在 HTC Desire 上它可以正常工作,但 OSM map 不可用 - 只有一个网格。另一方面,谷歌地图还可以。
LogCat 包含以下内容:

02-15 14:47:00.074: W/System.err(2106): 6 [main] INFO org.osmdroid.views.MapView - Using tile source: org.osmdroid.tileprovider.tilesource.XYTileSource@46361618
02-15 14:47:00.084: W/System.err(2106): 23 [main] INFO org.osmdroid.tileprovider.modules.MapTileFileStorageProviderBase - sdcard state: mounted
02-15 14:47:00.094: W/System.err(2106): 26 [main] INFO org.osmdroid.tileprovider.modules.MapTileFileStorageProviderBase - sdcard state: mounted
02-15 14:47:00.184: D/dalvikvm(2106): GC_FOR_MALLOC freed 4349 objects / 315536 bytes in 33ms
02-15 14:47:00.214: D/dalvikvm(2106): GC_EXTERNAL_ALLOC freed 317 objects / 14952 bytes in 28ms
02-15 14:47:00.224: W/System.err(2106): 160 [main] INFO org.osmdroid.tileprovider.MapTileProviderBase - rescale tile cache from 0 to 14
02-15 14:47:00.234: W/System.err(2106): 170 [main] INFO org.osmdroid.tileprovider.MapTileProviderBase - Finished rescale in 10ms
02-15 14:47:00.284: I/MapActivity(2106): Handling network change notification:CONNECTED
02-15 14:47:00.284: E/MapActivity(2106): Couldn't get connection factory client

在模拟器上没有任何进展。 我认为“无法获取连接工厂客户端”是我的问题的原因,但不知道解决此问题的方法。

最佳答案

有两种情况可能会发生应用程序无响应 (ANR):

  1. 5 秒内对输入事件(例如按键、屏幕触摸)没有响应。
  2. BroadcastReceiver 在 10 秒内未完成执行。

ANR 的常见原因是(停滞的)网络操作或昂贵的计算。 关于如何解决这个问题,有很多帖子(例如 herehere ),但最大的帮助可能是 Android API .

我快速浏览了示例代码,我不确定,但也许 onResume() 中调用的 setMapView() 方法花费的时间太长。您可以通过注释该行来测试这一点。否则,请检查模拟器上的 traces.txt 文件以获取线索和/或将日志记录语句添加到代码中以查明哪个操作花费的时间太长。

至于您的“无法获取连接工厂客户端”错误,该问题已得到解答 here

关于java - 崩溃的 GoogleWrapperSample (OpenStreetMap),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9287959/

相关文章:

android - 是否可以从 Native c++ 客户端绑定(bind)到 Java 服务,并进行事务处理,从服务接收数据?

php - 在 PHP 和 Android 之间创建 REST 服务

javascript - Google map 更改标记数据而不删除/创建 (MarkerWithLabel)

java - 推特认证 API 问题

java - 如何使用 apache POI for word 在文本上添加删除线

android - 使用 Firebase 应用检查不起作用(调试)

android - Google MapView 上的动画标记

android - 应用程序正在运行但 MAP 是空白的我正在使用 google map api 来定位某个位置

java - Eclipse Java 中的 Scala 对象嵌套类

java - 如何将查询的结果集映射到表以外的不同实体