内存泄漏的Android谷歌地图API第2版(Memory leak for Android Goo

2019-08-31 06:43发布

我与谷歌地图API的Android V2内存泄漏问题挣扎。 通过每一个我的观点后,再次变得可见时间约85KB堆的使用量增加:

  • 手机屏幕关闭时(如按下电源按钮后)。
  • 在用户退出应用程序按下Home键。

该应用程序最终与一个内存不足的异常崩溃。 泄漏不会出现在屏幕上旋转,或“后退”按钮退出时。 有关解决方法或这个问题背后的原因,任何想法?

我的代码:

public class LeakActivity extends FragmentActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_leak);
    }
}

XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/myLayout"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<fragment
    android:id="@+id/map_1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    class="com.google.android.gms.maps.SupportMapFragment" />

</RelativeLayout>

Answer 1:

这可能与Google地图API在这个开放的问题:

发行4766 -错误:Android地图API V2泄漏大量内存

使用DDMS”‘转储HPROF’工具来转储HPROF文件,以将其转换hprof-conv和使用MAT检查泄漏。 如果是在谷歌地图API,请发布一个APK(或更好简单的测试代码)的开放问题,包括HPROF文件。

如果是我遇到,它可能只在Android 2.x的发生同样的错误,请检查过。



Answer 2:

我试图用的System.gc()和map.clear()地图初始化之前。

  @Override
public void onActivityCreated (Bundle savedInstanceState){
    super.onActivityCreated(savedInstanceState);

    if (GooglePlayServicesUtil.isGooglePlayServicesAvailable(getActivity()) == ConnectionResult.SUCCESS) {
        System.gc();
getMap().clear();
setupmap();


    }
}
 @Override
public void onLowMemory() {
  super.onLowMemory();
System.gc();
}


文章来源: Memory leak for Android Google Maps API v2