我正在用我的头撞砖墙来解决我可以在三星设备上重现的内存泄漏问题,至少是 Galaxy S4、S5 和 Android 版本 4.4.2。
在我的应用程序中,我在 ActionBarActivity 的 fragment 中使用嵌套的 SupportMapFragment,并设置了选项卡导航,我用 onActivityCreated 中的 ChildFragmentManager 手动替换它,这是嵌套 fragment 的推荐方法。
在缩放和平移一分钟左右时,我可以看到堆越来越大,最终导致 OOM 导致我的应用程序崩溃。 我正在使用 GroundOverlays,我知道 Google 建议不要保留映射对象以防止内存泄漏。
即使通过将选项卡 fragment 替换为没有任何花哨对象(即标记、覆盖等)的 SupportMapFragment 来缩小范围(并使用 v4 支持库的最新版本),我也可以在我的 Samsung S4 设备上重现调试问题. 在我的三星 S4 Android 版本 4.4.2 上调试来自 Google 的示例 Google Maps API 演示应用程序时,我也可以重现该问题。
特别是在选择混合映射类型时,堆会快速增长,应用崩溃前平均需要大约 2 分钟。
java.lang.OutOfMemoryError
at android.graphics.Bitmap.nativeCreate(Native Method)
at android.graphics.Bitmap.createBitmap(Bitmap.java:903)
at android.graphics.Bitmap.createBitmap(Bitmap.java:880)
at android.graphics.Bitmap.createBitmap(Bitmap.java:847)
at com.google.maps.api.android.lib6.gmm6.o.c.l.a(Unknown Source)
at com.google.maps.api.android.lib6.gmm6.o.u.a(Unknown Source)
at com.google.maps.api.android.lib6.gmm6.o.d.c.a(Unknown Source)
at com.google.maps.api.android.lib6.gmm6.o.d.b.a(Unknown Source)
at com.google.maps.api.android.lib6.gmm6.o.l.a(Unknown Source)
at com.google.maps.api.android.lib6.gmm6.o.l.b(Unknown Source)
at com.google.maps.api.android.lib6.gmm6.o.dc.k(Unknown Source)
at com.google.maps.api.android.lib6.gmm6.o.dc.run(Unknown Source)
有没有人有任何想法或遇到过类似的行为?
最佳答案
看看这个 issue谷歌已经承认了这一点。它与 Google Play 服务 6.1.09 推出的更改有关,但它仍然存在于 6.1.11 中。
人们“盯着”这个问题会帮助它得到解决。
关于Android Maps V2 内存泄漏三星设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26125008/