android - MapView保持上下文导致内存泄漏

标签 android google-maps memory-leaks android-mapview leakcanary

我正在使用 MapView 版本。 10.0.1。我遇到了内存泄漏 MapView 持有 Activity 上下文。
LeakCanary 跟踪:

com.demo.app.ui.main.MainActivity has leaked:
GC ROOT wl.a
references oo.a
references maps.ad.L.g
references maps.ad.V.c
references maps.D.i.a
references maps.D.p.mParent
references android.widget.FrameLayout.mParent
references com.google.android.gms.maps.MapView.mContext
leaks com.demo.app.ui.main.MainActivity instance

最佳答案

泄漏很可能来自谷歌地图继续跟踪您的当前位置(如果您已设置)。所以将以下内容添加到您的 onDestroy()

@Override
public void onDestroy() {

    if (mMapView != null) {
        mMapView.onDestroy();
    }

    //Clean up resources from google map to prevent memory leaks. 
    //Stop tracking current location
    if(mGoogleMap != null) {
        mGoogleMap.setMyLocationEnabled(false);
    }
    super.onDestroy();
}

关于android - MapView保持上下文导致内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41097269/

相关文章:

android - 我想编写一个 ImageView 先缓慢旋转然后逐渐增加旋转速度的程序

android - 带有 SortedList 的嵌套 RecyclerView 不显示任何内容

android - 在 Fragment Activity 中动态包含另一个布局

Android - 有没有办法弹出整个任务?

javascript - 当使用 3d 变换时,Google map 控制 Webkit 中的卡住

php - 表单数据未设置

c++ - 任务管理器的精确度如何?

java - 内存泄漏 : Garbage-Collection Root

google-maps - Google map API 和 duration_in_traffic

.net - 不调用 Delegate.EndInvoke 会导致内存泄漏......一个神话?