gpt4 book ai didi

java - RecyclerView 中的 MapView 内存泄漏

转载 作者:行者123 更新时间:2023-11-29 20:00:31 26 4
gpt4 key购买 nike

我已经检查了很多其他问题,但没有一个解决方案有效,我没有使用 googleMap.setMyLocationEnabled(true) 所以这不是问题所在。

我正在加载 MapView 的适配器位于 here .

    @Override
public void onMapReady(GoogleMap googleMap) {
//TODO: Allow user to update this 1-normal 2-satellite 3-Terrain
MapsInitializer.initialize(mContext);

gMap = googleMap;
gMap.getUiSettings().setAllGesturesEnabled(false);

googleMap.setMapType(1);
googleMap.getUiSettings().setMapToolbarEnabled(false);

// If we have map data, update the map content.
if (mMapLocation != null) {
updateMapContents();
}
}

map 加载正常且功能正常,我只是在方向更改后出现内存不足错误。

这是 LeakCanary 的输出:

在 me.calebjones.spacelaunchnow.debug:1.0.0-DEBUG:28 中。* me.calebjones.spacelaunchnow.MainActivity 已泄露:* GC ROOT maps.dz.af$a.f* 引用 maps.dz.af.k* 引用 maps.dg.p.mParent* 引用 android.widget.FrameLayout.mParent* 引用 com.google.android.gms.maps.MapView.mContext* 泄漏 me.calebjones.spacelaunchnow.MainActivity 实例

  • 保留:2.3 KB。
  • 引用 key :9007ff6a-0072-49ce-b8cc-afc17cb19a76
  • 设备:motorola google Nexus 6 shamu
  • Android 版本:6.0.1 API:23 LeakCanary:1.4-beta1 02804f3
  • 持续时间:watch=5791ms,gc=156ms,heap dump=11974ms,analysis=85902ms

最佳答案

您的 ViewHolder 中有 GoogleMap。您应该重写 onViewRecycled 方法并清理内存:

@Override
public void onViewRecycled(FriendViewHolder holder) {
if (holder.gMap != null) {
holder.gMap.clear();
holder.gMap.setMapType(GoogleMap.MAP_TYPE_NONE);
}
}

关于java - RecyclerView 中的 MapView 内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36340370/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com