安卓地图、标记和内存泄漏

3
我正在阅读 Android 文档,http://developer.android.com/reference/com/google/android/gms/maps/MapFragment.html,我看到了这一句话:
任何从 GoogleMap 中获取的对象都与视图关联。重要的是不要在视图生命周期之外持有对象,例如 Marker。否则会导致内存泄漏,因为视图无法释放。
我不能完全理解这句话,也不确定它是否适用于我,但我想确认一下:如果片段在主视图仍然存在时被销毁,那么这只适用于此情况,对吗?我的地图片段是该布局 XML 中唯一的元素,所以当用户离开后,标记对象(以及其他所有内容)将被销毁。我是对的还是相反?
1个回答

6
如果您查看片段lifecycle,您会发现视图可能在片段仍然存在时被销毁。它也可以在片段被销毁之前重新创建视图。这意味着您应该在onCreateViewonDestroyView回调中清理和创建所有标记。如果您使用这些回调进行标记操作,那么就应该没问题。

有一个小问题 - 如果我扩展FragmentActivity,上述内容是否仍然适用?因为在FragmentActivity中,onCreateView似乎与Fragment不同,在SO的其他地方我读到,onCreate在FragmentActivity中使用是可以的。 - lucas
1
一个Activity没有onCreateView回调,所以你必须使用onCreate。我建议扩展MapFragment并将所有的地图内容放在片段中。 - Bobbake4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接