diff --git a/.idea/misc.xml b/.idea/misc.xml
index 21e99e2dc0..cd77a1f062 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -4,7 +4,7 @@
-
+
\ No newline at end of file
diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/MogoBaseMapView.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/MogoBaseMapView.java
index e51e933608..9137677d96 100644
--- a/libraries/mogo-map-api/src/main/java/com/mogo/map/MogoBaseMapView.java
+++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/MogoBaseMapView.java
@@ -86,6 +86,7 @@ public abstract class MogoBaseMapView extends FrameLayout implements ILifeCycle
if ( mMapView != null ) {
mMapView.onDestroy();
}
+ MogoMap.getInstance().clear();
}
@Override
diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/MogoMap.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/MogoMap.java
index b2c5986293..3aae71ad09 100644
--- a/libraries/mogo-map-api/src/main/java/com/mogo/map/MogoMap.java
+++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/MogoMap.java
@@ -46,4 +46,9 @@ public class MogoMap {
public IMogoMap getMogoMap() {
return mMap;
}
+
+ public void clear(){
+ mContext = null;
+ mMap = null;
+ }
}
diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java
index c9de4dc5cb..e6579f2e41 100644
--- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java
+++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java
@@ -147,6 +147,8 @@ public class EntranceFragment extends MvpFragment {
@@ -396,10 +398,12 @@ public class EntranceFragment extends MvpFragment ONE_DAY_TIME) {
+ Logger.d(TAG, "--------1------");
isGreaterThanOneDay = true;
} else {
+ Logger.d(TAG, "--------2------");
isGreaterThanOneDay = false;
}
@@ -422,13 +426,24 @@ public class EntranceFragment extends MvpFragment 200) {
- showSlideMapVoiceGuide();
+ if (isShowGuide && isGreaterThanOneDay()) {
+ if (motionEvent.getX() > 200) {
+ showSlideMapVoiceGuide();
+ }
}
+
break;
case MotionEvent.ACTION_MOVE:
@@ -582,6 +606,7 @@ public class EntranceFragment extends MvpFragment impleme
@Override
protected void onDestroy() {
super.onDestroy();
+ mMogoMapService.getHostListenerRegister().unregisterMarkerClickListener();
mMogoStatusManager.setMainPageLaunchedStatus( TAG, false );
mMogoMapService = null;
mMogoMapUIController = null;
@@ -359,5 +360,8 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
mServiceApis.getOnlineCarPanelApi().clear();
ContextHolderUtil.releaseContext();
MogoModulesManager.getInstance().onDestroy();
+ SchemeIntent.getInstance().clear();
+ FloatingViewHandler.clear();
+ mServiceApis.getShareManager().releaseContext();
}
}
diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/SchemeIntent.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/SchemeIntent.java
index 10f1d86738..4280feba01 100644
--- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/SchemeIntent.java
+++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/SchemeIntent.java
@@ -55,16 +55,23 @@ public class SchemeIntent implements IMogoStatusChangedListener {
}
}
- private SchemeIntent() {
- // private constructor
+ private static volatile SchemeIntent sInstance;
+
+ private SchemeIntent(){}
+
+ public static SchemeIntent getInstance(){
+ if( sInstance == null ){
+ synchronized( SchemeIntent.class ) {
+ if( sInstance == null ){
+ sInstance = new SchemeIntent();
+ }
+ }
+ }
+ return sInstance;
}
- private static final class InstanceHolder {
- private static final SchemeIntent INSTANCE = new SchemeIntent();
- }
-
- public static SchemeIntent getInstance() {
- return InstanceHolder.INSTANCE;
+ public synchronized void release(){
+ sInstance = null;
}
public void init( Context context, IMogoServiceApis apis ) {
@@ -73,9 +80,11 @@ public class SchemeIntent implements IMogoStatusChangedListener {
mApis.getStatusManagerApi().registerStatusChangedListener( TAG, StatusDescriptor.MAIN_PAGE_RESUME, this );
}
- private Object readResolve() {
- // 阻止反序列化,必须实现 Serializable 接口
- return InstanceHolder.INSTANCE;
+ public void clear(){
+ mApis.getStatusManagerApi().unregisterStatusChangedListener( TAG, StatusDescriptor.MAIN_PAGE_RESUME, this );
+ mContext = null;
+ mApis = null;
+
}
public void handle( Intent intent ) {
diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/windowview/FloatingViewHandler.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/windowview/FloatingViewHandler.java
index 5485f4778d..a1c8afd276 100644
--- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/windowview/FloatingViewHandler.java
+++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/windowview/FloatingViewHandler.java
@@ -41,6 +41,10 @@ public class FloatingViewHandler {
sFloatingLayout = frameLayout;
}
+ public static void clear(){
+ sFloatingLayout = null;
+ }
+
/**
* 添加任意view到布局,不考虑优先级
*
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MockIntentHandler.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MockIntentHandler.java
index 6339b4f7f8..89a0c1fb74 100644
--- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MockIntentHandler.java
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MockIntentHandler.java
@@ -338,6 +338,13 @@ public class MockIntentHandler implements IntentHandler {
case 30:
MarkerServiceHandler.getMapService().getMapUIController().forceRender();
break;
+ case 31:
+ Intent intent3 = new Intent();
+ intent3.setAction( "AUTONAVI_STANDARD_BROADCAST_RECV" );
+ intent3.putExtra( "KEY_TYPE", 12404 );
+ intent3.putExtra( "EXTRA_REQUEST_AUTO_STATE", 0 );
+ context.sendBroadcast( intent3 );
+ break;
}
}
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java
index 786ef46225..42614860ee 100644
--- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java
@@ -67,7 +67,7 @@ class LauncherCardRefresher {
public static final long ONE_MINUTE = 60 * 1000L;
public static final long ONE_DAY = 24 * 60 * ONE_MINUTE;
private String mLaunchTTSText;
- private long mDefaultTTSPlayInterval = 2 * ONE_MINUTE;
+ private long mDefaultTTSPlayInterval = 60 * ONE_MINUTE;
private LauncherCardAdvertisementData.LauncherCardAdvertisement mDefaultLauncherCardConfig;
private List< LauncherCardAdvertisementData.LauncherCardAdvertisement > mAdvertisements;
@@ -156,7 +156,7 @@ class LauncherCardRefresher {
private ZhidaoRefreshModel mZhidaoRefreshModel;
private LauncherCardRefreshStrategy mExplorerWayOrOnlineCarDataStrategy = new LauncherCardRefreshStrategy(
- 1 * ONE_MINUTE, null, MSG_EXPLORER_WAY_OR_ONLINE_CAR_DATA
+ 40 * ONE_MINUTE, null, MSG_EXPLORER_WAY_OR_ONLINE_CAR_DATA
);
private LauncherCardRefreshStrategy mInduceStrategy = new LauncherCardRefreshStrategy(
3 * ONE_MINUTE, mExplorerWayOrOnlineCarDataStrategy, MSG_INDUCE
diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java b/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java
index 5b524654c0..a8f411f093 100644
--- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java
+++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java
@@ -131,6 +131,11 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener,
mContext = context;
}
+ @Override
+ public void releaseContext() {
+ mContext = mContext.getApplicationContext();
+ }
+
private void realShowDialog() {
if (mShareDialog == null) {
Logger.d(TAG, "realShowDialog context : " + mContext);
diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/SeekHelpManager.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/SeekHelpManager.kt
index 83282b97f4..e55988e46c 100644
--- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/SeekHelpManager.kt
+++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/SeekHelpManager.kt
@@ -82,7 +82,7 @@ object SeekHelpManager {
if(!isSeeking) {
isSeeking = true
if (this.context == null) {
- this.context = context
+ this.context = context.applicationContext
}
aiAssist = AIAssist.getInstance(context)
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/fragment/V2XEventPanelFragment.kt b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/fragment/V2XEventPanelFragment.kt
index fd51aa6146..c0deed1c08 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/fragment/V2XEventPanelFragment.kt
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/fragment/V2XEventPanelFragment.kt
@@ -53,9 +53,16 @@ class V2XEventPanelFragment : MvpFragment
diff --git a/modules/mogo-module-v2x/src/main/res/layout/window_fault_help.xml b/modules/mogo-module-v2x/src/main/res/layout/window_fault_help.xml
index e96d3e9056..04ffc5cd62 100644
--- a/modules/mogo-module-v2x/src/main/res/layout/window_fault_help.xml
+++ b/modules/mogo-module-v2x/src/main/res/layout/window_fault_help.xml
@@ -7,6 +7,7 @@
android:layout_height="@dimen/module_v2x_fatigue_driving_window_height_ground"
android:orientation="vertical"
android:overScrollMode="never"
+ android:padding="@dimen/module_v2x_widow_top_gaps"
tools:itemCount="1"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/item_v2x_fault_help" />
diff --git a/modules/mogo-module-v2x/src/main/res/layout/window_road_event_detail.xml b/modules/mogo-module-v2x/src/main/res/layout/window_road_event_detail.xml
index 380e53446b..cb599e80c8 100644
--- a/modules/mogo-module-v2x/src/main/res/layout/window_road_event_detail.xml
+++ b/modules/mogo-module-v2x/src/main/res/layout/window_road_event_detail.xml
@@ -12,6 +12,7 @@
android:minHeight="@dimen/module_v2x_event_window_height"
android:orientation="horizontal"
android:overScrollMode="never"
+ android:padding="@dimen/module_v2x_widow_top_gaps"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
diff --git a/modules/mogo-module-v2x/src/main/res/values-ldpi/dimens.xml b/modules/mogo-module-v2x/src/main/res/values-ldpi/dimens.xml
index c99bf31c73..e0a9f57de8 100644
--- a/modules/mogo-module-v2x/src/main/res/values-ldpi/dimens.xml
+++ b/modules/mogo-module-v2x/src/main/res/values-ldpi/dimens.xml
@@ -79,4 +79,5 @@
16px
20px
+ 6px
diff --git a/modules/mogo-module-v2x/src/main/res/values-mdpi/dimens.xml b/modules/mogo-module-v2x/src/main/res/values-mdpi/dimens.xml
index c99bf31c73..a3d322e698 100644
--- a/modules/mogo-module-v2x/src/main/res/values-mdpi/dimens.xml
+++ b/modules/mogo-module-v2x/src/main/res/values-mdpi/dimens.xml
@@ -79,4 +79,5 @@
16px
20px
+ 3px
diff --git a/modules/mogo-module-v2x/src/main/res/values-xhdpi/dimens.xml b/modules/mogo-module-v2x/src/main/res/values-xhdpi/dimens.xml
index 53a5cae3b8..16f90b3823 100644
--- a/modules/mogo-module-v2x/src/main/res/values-xhdpi/dimens.xml
+++ b/modules/mogo-module-v2x/src/main/res/values-xhdpi/dimens.xml
@@ -77,6 +77,6 @@
158px
26px
25px
-
+ 2px
diff --git a/modules/mogo-module-widgets/src/main/java/com/mogo/module/widgets/AutoNaviIntentHandler.java b/modules/mogo-module-widgets/src/main/java/com/mogo/module/widgets/AutoNaviIntentHandler.java
index 120e4e90ed..d0c1562a48 100644
--- a/modules/mogo-module-widgets/src/main/java/com/mogo/module/widgets/AutoNaviIntentHandler.java
+++ b/modules/mogo-module-widgets/src/main/java/com/mogo/module/widgets/AutoNaviIntentHandler.java
@@ -23,6 +23,7 @@ import com.mogo.utils.CommonUtils;
import com.mogo.utils.LaunchUtils;
import com.mogo.utils.ResourcesHelper;
import com.mogo.utils.TipToast;
+import com.mogo.utils.UiThreadHandler;
import com.mogo.utils.logger.Logger;
import java.util.HashMap;
@@ -40,6 +41,9 @@ class AutoNaviIntentHandler implements IMogoVoiceCmdCallBack {
private static final String TAG = "AutoNaviIntentHandler";
public static final String OPEN = "OPEN_APP";
+ // 显示浮窗时,同步状态时间间隔
+ public static final long SYNC_INTERVAL = 60_000L;
+
private static volatile AutoNaviIntentHandler sInstance;
private AutoNaviIntentHandler() {
@@ -70,27 +74,33 @@ class AutoNaviIntentHandler implements IMogoVoiceCmdCallBack {
sInstance = null;
}
+ private Runnable mAutoNaviSyncRunnable = () -> {
+ if ( mWindowManagerView != null && mWindowManagerView.isShowing() ) {
+ syncAutoNaviForgroundStatus( AbsMogoApplication.getApp() );
+ }
+ };
+
public void handle( Context context, Intent intent ) {
int keyType = intent.getIntExtra( "KEY_TYPE", 0 );
+ Logger.d( TAG, "KEY_TYPE = " + keyType );
switch ( keyType ) {
case 10021:
closeEntrance();
break;
case 10019:
int extraState = intent.getIntExtra( "EXTRA_STATE", -1 );
+ Logger.d( TAG, "EXTRA_STATE = " + extraState );
switch ( extraState ) {
- case 3:
+ case 3: // 前台
syncAutoNaviNavingStatus( context );
break;
- case 4:
+ case 4: // 后台
+ case 9: // 非导航
closeEntrance();
break;
- case 8:
+ case 8: // 导航
showEntrance( context );
break;
- case 9:
- closeEntrance();
- break;
}
break;
}
@@ -106,6 +116,7 @@ class AutoNaviIntentHandler implements IMogoVoiceCmdCallBack {
}
private void showEntrance( Context context ) {
+
if ( mWindowManagerView == null ) {
mWindowManagerView = new WindowManagerView.Builder( AbsMogoApplication.getApp() )
.contentView( R.layout.module_widgets_app_entrance )
@@ -125,9 +136,16 @@ class AutoNaviIntentHandler implements IMogoVoiceCmdCallBack {
if ( mWindowManagerView.isShowing() ) {
return;
}
+ if ( MogoApisHandler.getInstance()
+ .getApis()
+ .getStatusManagerApi()
+ .isMainPageOnResume() ) {
+ return;
+ }
mWindowManagerView.show();
MogoWidgetManger.getInstance().getApis().getAnalyticsApi().track( "NAVI_button_show", null );
AIAssist.getInstance( context ).registerUnWakeupCommand( OPEN, new String[]{"切换到辅助驾驶模式"}, this );
+ UiThreadHandler.postDelayed( mAutoNaviSyncRunnable, SYNC_INTERVAL );
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
@@ -221,6 +239,7 @@ class AutoNaviIntentHandler implements IMogoVoiceCmdCallBack {
}
public void closeEntrance() {
+ UiThreadHandler.removeCallbacks( mAutoNaviSyncRunnable );
if ( mWindowManagerView == null ) {
return;
}
@@ -233,6 +252,7 @@ class AutoNaviIntentHandler implements IMogoVoiceCmdCallBack {
}
public void syncAutoNaviForgroundStatus( Context context ) {
+ Logger.d( TAG, "查询高德前后台状态" );
Intent intent = new Intent();
intent.setAction( "AUTONAVI_STANDARD_BROADCAST_RECV" );
intent.putExtra( "KEY_TYPE", 12404 );
@@ -241,6 +261,7 @@ class AutoNaviIntentHandler implements IMogoVoiceCmdCallBack {
}
public void syncAutoNaviNavingStatus( Context context ) {
+ Logger.d( TAG, "查询高德导航状态" );
Intent intent = new Intent();
intent.setAction( "AUTONAVI_STANDARD_BROADCAST_RECV" );
intent.putExtra( "KEY_TYPE", 12404 );
diff --git a/modules/mogo-module-widgets/src/main/java/com/mogo/module/widgets/MogoWidgetManger.java b/modules/mogo-module-widgets/src/main/java/com/mogo/module/widgets/MogoWidgetManger.java
index 0032be1ef0..8d1e7d41bc 100644
--- a/modules/mogo-module-widgets/src/main/java/com/mogo/module/widgets/MogoWidgetManger.java
+++ b/modules/mogo-module-widgets/src/main/java/com/mogo/module/widgets/MogoWidgetManger.java
@@ -10,6 +10,7 @@ import com.mogo.service.IMogoServiceApis;
import com.mogo.service.intent.IMogoIntentListener;
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
import com.mogo.service.statusmanager.StatusDescriptor;
+import com.mogo.utils.UiThreadHandler;
public
/**
@@ -65,7 +66,9 @@ class MogoWidgetManger implements IMogoNaviListener2, IMogoIntentListener, IMogo
initMapStatusListener();
initStatusListener();
initIntentListener();
- AutoNaviIntentHandler.getInstance().syncAutoNaviForgroundStatus( mContext );
+ UiThreadHandler.postDelayed( ()->{
+ AutoNaviIntentHandler.getInstance().syncAutoNaviForgroundStatus( mContext );
+ }, 1_000L );
}
private void initMapStatusListener() {
diff --git a/modules/mogo-module-widgets/src/main/java/com/mogo/module/widgets/MogoWidgetsProvider.java b/modules/mogo-module-widgets/src/main/java/com/mogo/module/widgets/MogoWidgetsProvider.java
index 6cc91544a3..a4985601b7 100644
--- a/modules/mogo-module-widgets/src/main/java/com/mogo/module/widgets/MogoWidgetsProvider.java
+++ b/modules/mogo-module-widgets/src/main/java/com/mogo/module/widgets/MogoWidgetsProvider.java
@@ -94,6 +94,6 @@ class MogoWidgetsProvider implements IMogoModuleProvider {
Logger.d( TAG, "init." );
UiThreadHandler.postDelayed( () -> {
MogoWidgetManger.getInstance().init( context );
- }, 5500 );
+ }, 6_000L );
}
}
diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/share/IMogoShareManager.java b/services/mogo-service-api/src/main/java/com/mogo/service/share/IMogoShareManager.java
index 17a29d3455..ca0285449c 100644
--- a/services/mogo-service-api/src/main/java/com/mogo/service/share/IMogoShareManager.java
+++ b/services/mogo-service-api/src/main/java/com/mogo/service/share/IMogoShareManager.java
@@ -25,4 +25,6 @@ public interface IMogoShareManager extends IProvider {
* @param context 待重置的上下文
*/
void resetContext(Context context);
+
+ void releaseContext();
}
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 083ea0ddd8..41eeb123b8 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
@@ -30,7 +30,6 @@ public class FragmentStack {
private FragmentManager mFragmentManager;
//private FragmentTransaction mFragmentTransaction;
private int mContainerId;
- private Activity mActivity;
private FragmentDescriptor mCurrentFragment;
private FragmentStackTransactionListener mFragmentStackTransactionListener;
@@ -56,7 +55,6 @@ public class FragmentStack {
}
public void init( AppCompatActivity activity, int containerId ) {
- mActivity = activity;
mFragmentManager = activity.getSupportFragmentManager();
mContainerId = containerId;
}