小编SOE*_*RGI的帖子

Android Maps V2内存泄漏LocationClientHelper

我们正试图在我们的Android应用程序中追踪GoogleMap上发生的内存泄漏,该应用程序在大约40-50个设备轮换后以OOM结束.地图设置为3500个标记.

该应用程序的minSDK为9,因此使用V4支持库中的SupportMapFragment.

我们尝试过多种方法,包括:

  • 缓存LatLng
  • 缓存CameraUpdates
  • 从地图中删除标记
  • 从地图中删除侦听器
  • 删除所有侦听器,标记等,以便我们只有一个普通的地图
  • 更新Google Play服务库
  • 更新支持库

分析MAT中的内存转储表明我们积累了大量的实例 com.google.android.gms.location.internal.LocationClientHelper$ListenerTransport ,我们不知道它们来自哪里.

任何人都知道这个内存泄漏的原因是什么?

以下代码已删除所有标记和侦听器,但仍然存在泄漏.首先是基类:

public abstract class BaseMapFragment extends Fragment {

public static final int MENU_ITEM_ID_SEARCH= 102;
public static final int MENU_ITEM_ID_SHOW_LIST= 100;
public static final int ZOOM_LEVEL_DEFAULT= 14;

private static final String SAVED_INSTANCE_LATITUDE= "savedLatitude";
private static final String SAVED_INSTANCE_LONGITUDE= "savedLongitutde";
private static final String SAVED_INSTANCE_ZOOM= "savedZoom";

protected static final String CLASSTAG= BaseMapFragment.class.getSimpleName();

private GoogleMap mMap;
private CameraUpdate mResumeCameraUpdate= null;
private double mSavedLatitude;
private double mSavedLongitude;
private float …
Run Code Online (Sandbox Code Playgroud)

android google-maps memory-leaks google-maps-android-api-2 supportmapfragment

5
推荐指数
1
解决办法
883
查看次数