无法在onDestroy上销毁supportMapFragment

时间:2016-06-24 10:46:33

标签: android google-maps-android-api-2 markerclusterer

我正面临OOM问题,因为supportMapFragment没有被销毁。

使用Xml:

mMapFragment = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map));
GoogleMapOptions mapOptions = new GoogleMapOptions();
mapOptions.useViewLifecycleInFragment(true);
mMapFragment.newInstance(mapOptions);

代码段:

@Override
protected void onDestroy() {
    super.onDestroy();

    //clear all the data
    mMap.clear();
    mMapFragment.onDestroyView();

}

// ondestroy调用

ProgressDialog

跟随给出的文档中提到的相同: https://developers.google.com/android/reference/com/google/android/gms/maps/SupportMapFragment

1 个答案:

答案 0 :(得分:1)

据我所知,你没有在这里为mMapFragment设置选项:

mMapFragment.newInstance(mapOptions);

您正在使用此选项再创建一个SupportMapFragment,但它已丢失,因为您没有分配它。 Documentation says,即GoogleMapsOptions

  

为GoogleMap定义配置GoogleMapOptions。这些选项   可以在以编程方式将地图添加到应用程序时使用(如   反对通过XML)。

如果要调用OnDestroy,则应以编程方式创建映射,不使用XML,如:

GoogleMapOptions mapOptions = new GoogleMapOptions();
mapOptions.useViewLifecycleInFragment(true);
mMapFragment = SupportMapFragment.newInstance(mapOptions);