我在 Google 地图上绘制自定义图块时遇到问题。
使用来自的GoogleTileOverlayOSMDroid
,我正在绘制本地存储在设备 SD 卡上的自定义图块。
问题发生在我打开地图然后尝试返回其他活动后。事情开始变得奇怪了。XML 中定义的背景颜色没有显示和其他奇怪的事情。
我出于某种原因进行了广泛的搜索,但我所能想出的只是内存不足?
根据 Eclipse MAT,在我销毁包含MapView
andGoogleTileOverlay
让我知道我是否可以提供任何其他信息。
我在 Google 地图上绘制自定义图块时遇到问题。
使用来自的GoogleTileOverlayOSMDroid
,我正在绘制本地存储在设备 SD 卡上的自定义图块。
问题发生在我打开地图然后尝试返回其他活动后。事情开始变得奇怪了。XML 中定义的背景颜色没有显示和其他奇怪的事情。
我出于某种原因进行了广泛的搜索,但我所能想出的只是内存不足?
根据 Eclipse MAT,在我销毁包含MapView
andGoogleTileOverlay
让我知道我是否可以提供任何其他信息。
由于来自位图的内存泄漏,我正在处理 OOM 异常。似乎在清除地图活动中的切片缓存(以便在清除后不会创建新切片)之前从列表中删除叠加层MapView
是可行的。无论地图活动被创建/恢复多少次,我最终都有一个实例。Overlay
onPause
LRUMapTileCache
我的onPause
批次如下:
// .. get custom tiles off the screen first
mMapView.getOverlays().remove(mCustomTilesOverlay);
// .. release all custom tiles' bitmaps
mCustomTilesOverlay.clearTileCache();
// .. unregister intent receiver (in order not to leak it)
mCustomTilesOverlay.detach();
// .. indicate not-ready state by clearing the reference
mCustomTilesOverlay = null;
8 MB 仍然存在(见编辑),我使用android:largeHeap="true"
应用程序属性来补偿。
编辑
原来那些 8 MB 来自其他来源。缓存被成功清除。