Android - Google Maps API V2,避免内存泄漏

时间:2014-07-10 05:30:14

标签: android google-maps memory-leaks google-maps-android-api-2

我正在SupportMapFragmet上阅读this documentation,并说:

  

GoogleMap 获得的任何对象都与视图相关联。重要的是不要在视图的生命之外保持对象(例如 Marker )。否则会导致内存泄漏,因为视图无法释放。

我对此有点困惑,因为没有办法修改Markers,除非你持有它们的引用,就像这里的许多问题所说的那样(如this和{{3 }})那么有什么我想念的吗?

我目前正在使用HashMap将我的Markers与其他Objects相关联,我看不出如何避免它。这会泄漏记忆吗?是否有推荐的方法来编辑Marker并避免内存泄漏?

2 个答案:

答案 0 :(得分:2)

标记很可能具有对地图的引用,同样,drawable持有对它们所绑定的视图的内部引用。只要你拿着标记,你可能也会在地图上代替一个参考。

我不知道为什么他们不会使用弱引用。但是,如果他们这样做,他们就不会觉得有必要警告你不要因为抓住标记而泄漏。因此,如果您的hashmap比托管地图的片段/活动更长,则可能是内存泄漏。

答案 1 :(得分:1)

在片段被破坏之后遵循上述建议并从地图中删除所有标记后,我仍然遇到内存泄漏。对于我来说,解决方案最终是在片段被销毁之前在我的自定义TileOverlay上调用clearTileCache