From ab92ce6d5566a6c60050d18dbec2565a398d7d77 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Tue, 7 Jul 2020 20:50:17 +0800 Subject: [PATCH] bugfix --- .../com/mogo/module/map/MapPresenter.java | 32 ++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapPresenter.java b/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapPresenter.java index 1ee41a5e0c..3c3774398d 100644 --- a/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapPresenter.java +++ b/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapPresenter.java @@ -1,6 +1,8 @@ package com.mogo.module.map; +import android.app.ActivityManager; import android.content.BroadcastReceiver; +import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; @@ -35,10 +37,12 @@ import com.mogo.service.module.IMogoSearchManager; import com.mogo.service.module.IMogoSettingManager; import com.mogo.service.statusmanager.IMogoStatusManager; import com.mogo.service.strategy.IMogoRefreshStrategyController; +import com.mogo.utils.AppUtils; import com.mogo.utils.ResourcesHelper; import com.mogo.utils.UiThreadHandler; import com.mogo.utils.logger.Logger; +import java.util.List; import java.util.Map; /** @@ -147,6 +151,11 @@ public class MapPresenter extends Presenter< MapView > implements onChoosePath( intent, key_type ); } else if ( key_type == 10021 ) { if ( CustomNaviInterrupter.getInstance().interrupt() ) { + UiThreadHandler.postDelayed( () -> { + if ( isForeground( getContext() ) && !hasOthersActivity() && !mStatusManager.isMainPageOnResume() ) { + mLauncher.backToLauncher( getContext() ); + } + }, 500L ); return; } onStopNaviInternal(); @@ -181,6 +190,27 @@ public class MapPresenter extends Presenter< MapView > implements getContext().registerReceiver( broadcastReceiver, inputFilter ); } + private boolean isForeground( Context context ) { + if ( context != null ) { + ActivityManager activityManager = ( ActivityManager ) context.getSystemService( Context.ACTIVITY_SERVICE ); + List< ActivityManager.RunningAppProcessInfo > processes = activityManager.getRunningAppProcesses(); + for ( ActivityManager.RunningAppProcessInfo processInfo : processes ) { + if ( processInfo.processName.equals( context.getPackageName() ) ) { + if ( processInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND ) { + return true; + } + } + } + } + return false; + } + + private boolean hasOthersActivity() { + ActivityManager am = ( ActivityManager ) getContext().getSystemService( Context.ACTIVITY_SERVICE ); + List< ActivityManager.RunningTaskInfo > list = am.getRunningTasks( 2 ); + return list != null && list.size() > 1; + } + /** * 切换交通态势模式 * @@ -295,7 +325,7 @@ public class MapPresenter extends Presenter< MapView > implements private void zoomMap( boolean zoomIn ) { boolean isLocked = mMogoMapService.getMapUIController().isCarLocked(); MapControlResult result = mView.getUIController().changeZoom( zoomIn ); - if (! CustomNaviInterrupter.getInstance().interrupt() ) { + if ( !CustomNaviInterrupter.getInstance().interrupt() ) { if ( result == MapControlResult.TARGET ) { UiThreadHandler.postDelayed( () -> { if ( zoomIn ) {