diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java index c5371e1e3b..2cf6e854fc 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java @@ -76,7 +76,7 @@ public class AMapNaviViewWrapper implements IMogoMapView, private static final String TAG = "AMapNaviViewWrapper"; - private final AMapNaviView mMapView; + private AMapNaviView mMapView; private IMogoMap mIMap; private AMapMarkerClickHandler mMarkerClickHandler; @@ -239,8 +239,10 @@ public class AMapNaviViewWrapper implements IMogoMapView, public void onDestroy() { if ( mMapView != null ) { mMapView.onDestroy(); + mMapView = null; AMapUIController.release(); AMapWrapper.release(); + AMapMessageManager.getInstance().unregisterAMapMessageListener( this ); Logger.d( TAG, "map onDestroy" ); } } diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java index 91d6eaf763..29e896ba4a 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java @@ -367,6 +367,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme mMogoStatusManager.setMainPageLaunchedStatus( TAG, false ); mMogoStatusManager.setMainPageIsBackgroundStatus( TAG, false ); mMogoFragmentManager.unregisterMainFragmentStackTransactionListener(); + mMogoFragmentManager.destroy(); mMogoFragmentManager = null; mServiceApis.getMapServiceApi().getMapViewInstanceHandler().destroy(); mServiceApis.getMapServiceApi().getMapUIController().destroy(); diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/fragmentmanager/IMogoFragmentManager.java b/services/mogo-service-api/src/main/java/com/mogo/service/fragmentmanager/IMogoFragmentManager.java index 937d381963..6770fd9477 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/fragmentmanager/IMogoFragmentManager.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/fragmentmanager/IMogoFragmentManager.java @@ -78,4 +78,6 @@ public interface IMogoFragmentManager extends IProvider { void initMessageHistoryContainerId( int layoutId ); int getMessageHistoryContainerId(); + + void destroy(); } diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/fragmentmanager/FragmentStack.java b/services/mogo-service/src/main/java/com/mogo/service/impl/fragmentmanager/FragmentStack.java index d9047fa94e..84e58428a1 100644 --- a/services/mogo-service/src/main/java/com/mogo/service/impl/fragmentmanager/FragmentStack.java +++ b/services/mogo-service/src/main/java/com/mogo/service/impl/fragmentmanager/FragmentStack.java @@ -48,7 +48,7 @@ public class FragmentStack { return sInstance; } - public synchronized void release() { + public static synchronized void release() { sInstance = null; } @@ -199,4 +199,8 @@ public class FragmentStack { } invokeCallback(); } + + public void destroy(){ + mFragmentManager = null; + } } diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/fragmentmanager/MogoFragmentManager.java b/services/mogo-service/src/main/java/com/mogo/service/impl/fragmentmanager/MogoFragmentManager.java index 249b72a1a5..79f8abe749 100644 --- a/services/mogo-service/src/main/java/com/mogo/service/impl/fragmentmanager/MogoFragmentManager.java +++ b/services/mogo-service/src/main/java/com/mogo/service/impl/fragmentmanager/MogoFragmentManager.java @@ -74,6 +74,11 @@ public class MogoFragmentManager implements IMogoFragmentManager { return FragmentStack.getInstance().getMessageHistoryContainerId(); } + @Override + public void destroy() { + FragmentStack.getInstance().destroy(); + } + @Override public void init( Context context ) {