我遇到了在Google地图上绘制自定义图块的问题。
使用OSMDroid
中的GoogleTileOverlay,我正在绘制本地存储在设备SD卡上的自定义图块。
问题发生在我打开地图然后尝试返回其他活动之后。事情开始变得怪异。 XML中定义的背景颜色没有出现和其他奇怪的东西。
我搜索的原因很多,我能想到的是内存不足吗?
According to Eclipse MAT在 之后,上留下了8.4 MB的位图我销毁了包含MapView
和GoogleTileOverlay
的活动
如果我能提供任何其他信息,请告诉我。
答案 0 :(得分:1)
由于来自位图的内存泄漏,我正在处理OOM异常。似乎在MapView
地图活动中清除切片缓存(以便在清除后没有创建新切片)之前从Overlay
的{{1}}列表中删除叠加效果。无论地图活动创建/恢复多少次,我最终都有onPause
的单个实例。
我的LRUMapTileCache
批次如下:
onPause
8 MB仍然存在(请参阅编辑),我使用// .. 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来自其他来源。使用此功能可以成功清除缓存。