使用GoogleTileOverlay的Android MapView无法释放位图

时间:2012-09-04 18:47:09

标签: android bitmap android-mapview osmdroid

我遇到了在Google地图上绘制自定义图块的问题。

使用OSMDroid中的GoogleTileOverlay,我正在绘制本地存储在设备SD卡上的自定义图块。

问题发生在我打开地图然后尝试返回其他活动之后。事情开始变得怪异。 XML中定义的背景颜色没有出现和其他奇怪的东西。

我搜索的原因很多,我能想到的是内存不足吗?

According to Eclipse MAT 之后,上留下了8.4 MB的位图我销毁了包含MapViewGoogleTileOverlay的活动

如果我能提供任何其他信息,请告诉我。

1 个答案:

答案 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来自其他来源。使用此功能可以成功清除缓存。