diff --git a/config.gradle b/config.gradle index 8a952748cd..0cdac5de2e 100644 --- a/config.gradle +++ b/config.gradle @@ -160,7 +160,7 @@ targetSdkVersion : 22, gpssimulatornoop : "com.mogo.module:module-gps-simulator-noop:${MOGO_MODULE_GPS_SIMULATOR_NOOP_VERSION}", adasapi : "com.zhidao.autopilot.support:adas:1.0.1", - adasconfigapi : "com.zhidao.adasconfig:adasconfig:1.0.9", + adasconfigapi : "com.zhidao.adasconfig:adasconfig:1.1.4", // 个人中心的SDK personalsdk : "com.zhidaoauto.person.info:data:1.0.1", 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 832fd10301..24f557de14 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 @@ -185,6 +185,7 @@ public class AMapNaviViewWrapper implements IMogoMapView, aMap.setOnCameraChangeListener( this ); aMap.setOnMyLocationChangeListener( this ); } + AMapMessageManager.getInstance().clear(); AMapMessageManager.getInstance().registerAMapMessageListener( this ); } diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapViewWrapper.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapViewWrapper.java index 922690857b..f5cf1dfd7f 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapViewWrapper.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapViewWrapper.java @@ -70,6 +70,8 @@ public class AMapViewWrapper implements IMogoMapView, AMap.OnCameraChangeListener, AMap.OnMyLocationChangeListener { + private static boolean sIsCreated = false; + private static final String TAG = "AMapViewWrapper"; private final MapView mMapView; @@ -200,6 +202,13 @@ public class AMapViewWrapper implements IMogoMapView, @Override public void onCreate( Bundle bundle ) { + if ( sIsCreated ) { + initMapView(); + initListeners(); + initMyLocation(); + return; + } + sIsCreated = true; if ( mMapView != null ) { mMapView.onCreate( bundle ); Logger.d( TAG, "map onCreate" ); @@ -227,6 +236,7 @@ public class AMapViewWrapper implements IMogoMapView, @Override public void onDestroy() { + sIsCreated = false; if ( mMapView != null ) { mMapView.onDestroy(); Logger.d( TAG, "map onDestroy" ); @@ -362,6 +372,8 @@ public class AMapViewWrapper implements IMogoMapView, mMapView.getMap().moveCamera( CameraUpdateFactory.changeTilt( 60 ) ); break; case NorthUP_2D: + mMapView.getMap().moveCamera( CameraUpdateFactory.changeTilt( 0 ) ); + break; case CarUp_2D: mMapView.getMap().moveCamera( CameraUpdateFactory.changeTilt( 0 ) ); break; diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/message/AMapMessageManager.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/message/AMapMessageManager.java index dc3782aadc..caccdd97b0 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/message/AMapMessageManager.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/message/AMapMessageManager.java @@ -47,6 +47,12 @@ public class AMapMessageManager { } } + public synchronized void clear(){ + if ( mListeners != null ) { + mListeners.clear(); + } + } + public synchronized void unregisterAMapMessageListener( AMapMessageListener listener ) { mListeners.remove( listener ); } diff --git a/main-extensions/mogo-module-main-independent/src/main/java/com/zhidao/mogo/module/main/independent/MainIndependentActivity.java b/main-extensions/mogo-module-main-independent/src/main/java/com/zhidao/mogo/module/main/independent/MainIndependentActivity.java index 5e8642fa01..6cb5363e2d 100644 --- a/main-extensions/mogo-module-main-independent/src/main/java/com/zhidao/mogo/module/main/independent/MainIndependentActivity.java +++ b/main-extensions/mogo-module-main-independent/src/main/java/com/zhidao/mogo/module/main/independent/MainIndependentActivity.java @@ -65,7 +65,7 @@ public class MainIndependentActivity extends MainActivity { @Override protected void onPause() { super.onPause(); - mServiceApis.getAdasControllerApi().setUseAlgorithm( false ); + mServiceApis.getAdasControllerApi().setUseAlgorithm( true ); } @Override diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListChangedLiveData.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListChangedLiveData.java index 46ff541f23..225c7167c9 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListChangedLiveData.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListChangedLiveData.java @@ -14,21 +14,24 @@ public class AppsListChangedLiveData extends MutableLiveData { private Observer mObserver; - private AppsListChangedLiveData(){ - // private constructor - } + private static volatile AppsListChangedLiveData sInstance; - private static final class InstanceHolder{ - private static final AppsListChangedLiveData INSTANCE = new AppsListChangedLiveData(); - } + private AppsListChangedLiveData(){} public static AppsListChangedLiveData getInstance(){ - return InstanceHolder.INSTANCE; + if( sInstance == null ){ + synchronized( AppsListChangedLiveData.class ) { + if( sInstance == null ){ + sInstance = new AppsListChangedLiveData(); + } + } + } + return sInstance; } - private Object readResolve(){ - // 阻止反序列化,必须实现 Serializable 接口 - return InstanceHolder.INSTANCE; + private Object readResolve() { + // 阻止反序列化,必须实现 Serializable 接口 + return sInstance; } @Override @@ -37,7 +40,9 @@ public class AppsListChangedLiveData extends MutableLiveData { mObserver = observer; } - public void release(){ + public synchronized void release(){ removeObserver( mObserver ); + mObserver = null; + sInstance = null; } } diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsPresenter.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsPresenter.java index 4c16eafb4b..85628ad78b 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsPresenter.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsPresenter.java @@ -216,6 +216,12 @@ public class AppsPresenter extends Presenter< AppsView > { AppsListChangedLiveData.getInstance().release(); mView = null; mLauncher.destroy(); +` mAnalytics = null; + mCardManager = null; + if ( mLauncher != null ) { + mLauncher.destroy(); + } + mLauncher = null; } public void exit() { diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/InternalFunctionLauncher.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/InternalFunctionLauncher.java index 75af6c4455..8a948631fb 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/InternalFunctionLauncher.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/InternalFunctionLauncher.java @@ -103,6 +103,7 @@ public class InternalFunctionLauncher extends BaseAppLauncher { public void destroy() { if ( getNext() != null ) { getNext().destroy(); + setNext( null ); } } } diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppsModel.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppsModel.java index 4463a9e69c..7bf13bcf63 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppsModel.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppsModel.java @@ -36,7 +36,7 @@ public class AppsModel { private Map< Integer, List< AppInfo > > mPagedApps = new HashMap<>(); private AppsModel( Context context ) { - mContext = context; + mContext = context.getApplicationContext(); } public static AppsModel getInstance( Context context ) { diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java index b291ee015f..26e612592d 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java @@ -703,7 +703,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, } ); } - public void onSyncMarkerResponse(MarkerResponse response){ + public void onSyncMarkerResponse( MarkerResponse response ) { if ( ignoreDrawRequest() ) { return; } @@ -862,6 +862,9 @@ public class MapMarkerManager implements IMogoMarkerClickListener, // 平滑移动 private void startSmooth( IMogoMarker iMogoMarker, MarkerOnlineCar markerOnlineCar, MarkerLocation markerLocation ) { + if ( iMogoMarker == null ) { + return; + } List< MarkerCarPois > poiList = markerOnlineCar.getPois(); if ( filterErrorPoint( poiList ) ) { return;