2016-06-24 3 views
1

Я столкнулся с проблемой OOM, так как поддержкаMapFragment не уничтожается.Невозможно уничтожить поддержкуMapFragment on onDestroy

Xml используется:

<fragment 
    android:id="@+id/map" 
    android:name="com.google.android.gms.maps.SupportMapFragment" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

Фрагмент кода:

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

// OnDestroy вызова

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

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

} 

Круги так же, как упомянуто в документации Дано: https://developers.google.com/android/reference/com/google/android/gms/maps/SupportMapFragment

+0

Дело в том, 'OnDestroy()' не может быть названо - нет никакой гарантии, что он будет вызываться. – ishmaelMakitla

+0

Об уничтожении деятельности называется проверенная часть .. –

ответ

1

Насколько я вижу, вы не устанавливать опции здесь, чтобы ваш mMapFragment:

mMapFragment.newInstance(mapOptions); 

Вы создаете еще один SupportMapFragment с этой опцией, и он потерял, потому что вы не назначили его. Documentation says, что GoogleMapsOptions

Определяет конфигурации GoogleMapOptions для GoogleMap. Эти опции могут использоваться при добавлении карты в ваше приложение программно (как против XML).

Если вы хотите вызвать OnDestroy - вы должны создать карту программно, без XML, как:

GoogleMapOptions mapOptions = new GoogleMapOptions(); 
mapOptions.useViewLifecycleInFragment(true); 
mMapFragment = SupportMapFragment.newInstance(mapOptions); 
Смежные вопросы