2

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

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

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

我出于某种原因进行了广泛的搜索,但我所能想出的只是内存不足?

根据 Eclipse MAT我销毁包含MapViewandGoogleTileOverlay

让我知道我是否可以提供任何其他信息。

4

1 回答 1

1

由于来自位图的内存泄漏,我正在处理 OOM 异常。似乎在清除地图活动中的切片缓存(以便在清除后不会创建新切片)之前从列表中删除叠加层MapView是可行的。无论地图活动被创建/恢复多少次,我最终都有一个实例。OverlayonPauseLRUMapTileCache

我的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 来自其他来源。缓存被成功清除。

于 2012-12-07T07:34:30.917 回答