MapView v2保持上下文

Ian*_*ley 10 android google-maps memory-leaks android-mapview leakcanary

当使用最新的谷歌地图API中的MapView时,我收到了内存泄漏,因为MapView正在保持我的活动.

我使用了泄漏金丝雀并且有这种痕迹


D/LeakCanary:*GC ROOT com.google.android.gms.location.internal.ta

D/LeakCanary:*引用com.google.android.gms.location.internal.sa

D/LeakCanary:*引用com.google.maps.api.android.lib6.dvc

D/LeakCanary:*引用com.google.maps.api.android.lib6.d.aj.b

D/LeakCanary:*引用com.google.maps.api.android.lib6.gmm6.cpa

D/LeakCanary:*引用com.google.maps.api.android.lib6.gmm6.cymParent

D/LeakCanary:*引用android.widget.FrameLayout.mParent

D/LeakCanary:*引用com.google.android.gms.maps.MapView.mContext

D/LeakCanary:*泄漏com.myapp.activities.main.AttractionDetailActivity实例


谁看过这个吗?

小智 20

检查您是否正在调用googleMap.setMyLocationEnabled(true)onMapReady()回调.

如果你那么你应该打电话给googleMap.setMyLocationEnabled(false)你的onDestroy.

  • 即使应用此解决方法,我仍然看到泄漏发生. (3认同)

IHe*_*oid 9

这对我有用:

@Override
    public void onDestroy() {
        super.onDestroy();
        mMapView.onDestroy();
        if (mMap != null) {
            mMap.setMyLocationEnabled(false);
            mMap.clear();
        }
    }
Run Code Online (Sandbox Code Playgroud)