谷歌地图视图泄露非常严重。

3

我之前使用过MapFragment,但它对我的需求来说速度太慢了。MapView几乎是瞬间出现的,并且完全符合我的需求。但是它们都有一个共同点:

内存泄漏很严重。 我已经像应该做的那样在退出活动时“销毁”了MapView,但它仍然会泄漏。MapView在一个频繁打开和关闭并快速再次打开的活动中。这可能是问题所在吗?

这里是我的hprof文件的一些截图(由于可能存在敏感信息,我不想上传hprof文件):

The leaking of the Google Maps API The leaking of the Google Maps API #2

我遇到了多个泄漏问题,它们都指向相同的类。

然而,我正在使用一个自定义类,这在此时是不需要的,我将恢复默认的MapView。


你应该重复使用你的MapView,而不是一直重新创建一个新的。 - zgc7009
如何处理?MapView 在 activity 布局中,我应该在 onCreate 方法中使用 mapView.onCreate(savedInstanceState) 吗? - tim687
我来了解一下这个问题,因为它似乎很有趣。有一些关于MapView泄漏的错误报告(例如https://code.google.com/p/gmaps-api-issues/issues/detail?id=8111)。如果您确实适当地处理视图,则可能是一个错误。 - zgc7009
1个回答

1
我不确定是否是这种情况,但我使用Kotlin做了一些愚蠢的事情。 Kotlin具备空安全性。
googleMapView?.onDestroy()

我在我的Fragment的onDestroy()方法中调用了它。猜猜怎么着?googleMapView是null,所以它没有调用它的onDestroy()!因为我认为我的一些自定义类保留了引用或其他导致了这个问题,所以浪费了大约2个小时...


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