diff --git a/core/function-impl/mogo-core-function-check/src/main/java/com/mogo/eagle/core/function/check/VehicleMonitoringManager.java b/core/function-impl/mogo-core-function-check/src/main/java/com/mogo/eagle/core/function/check/VehicleMonitoringManager.java index e79c382afa..83996d1387 100644 --- a/core/function-impl/mogo-core-function-check/src/main/java/com/mogo/eagle/core/function/check/VehicleMonitoringManager.java +++ b/core/function-impl/mogo-core-function-check/src/main/java/com/mogo/eagle/core/function/check/VehicleMonitoringManager.java @@ -23,6 +23,7 @@ import com.mogo.eagle.core.utilcode.util.ThreadUtils; import com.mogo.module.service.receiver.MogoReceiver; import com.mogo.service.MogoServicePaths; import com.mogo.eagle.core.function.api.check.ICheckProvider; +import com.mogo.utils.ActivityLifecycleManager; import com.mogo.utils.network.RequestOptions; import java.util.List; @@ -79,7 +80,7 @@ public class VehicleMonitoringManager implements ICheckProvider { // CheckActivity.start(context); // } Intent starter = new Intent(context, CheckActivity.class); - starter.putExtra("CheckResultData",checkResultData); + starter.putExtra("CheckResultData", checkResultData); starter.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(starter); } @@ -144,16 +145,19 @@ public class VehicleMonitoringManager implements ICheckProvider { return false; } + CheckResultData checkResultData; CheckDialog dialog; + /** * 指标异常弹框 */ public void showDialog(Context context) { try { - if (AppUtils.isAppRunning(getPackageName(context)) && - (ActivityUtils.getTopActivity() instanceof CheckActivity == false)) { + if (ActivityLifecycleManager.getInstance().isAppActive() == true && + AppUtils.isAppRunning(getPackageName(context)) && + ActivityUtils.getTopActivity() instanceof CheckActivity == false) { if (dialog != null) { dialog.cancel(); } @@ -164,6 +168,7 @@ public class VehicleMonitoringManager implements ICheckProvider { e.printStackTrace(); } } + /** * @param context * @return 当前应用的版本名称 diff --git a/foudations/mogo-utils/src/main/java/com/mogo/utils/ActivityLifecycleManager.java b/foudations/mogo-utils/src/main/java/com/mogo/utils/ActivityLifecycleManager.java index 5297a356e0..603c370191 100644 --- a/foudations/mogo-utils/src/main/java/com/mogo/utils/ActivityLifecycleManager.java +++ b/foudations/mogo-utils/src/main/java/com/mogo/utils/ActivityLifecycleManager.java @@ -17,14 +17,14 @@ public class ActivityLifecycleManager { /** * 当前出于 Start 状态的 Activity */ - private ArrayList< Activity > mStartedActivities = new ArrayList<>(); + private ArrayList mStartedActivities = new ArrayList<>(); private ArrayList mAppStateListeners = new ArrayList<>(); /** * 当前存活的 Activity */ - private HashMap< Activity, ActivityTrace> mAliveActivities = new HashMap<>(); + private HashMap mAliveActivities = new HashMap<>(); /** * App 是否出于前台 @@ -44,10 +44,10 @@ public class ActivityLifecycleManager { private DefActivityLifecycleCallbacks mInnerActivityListener = new DefActivityLifecycleCallbacks() { @Override - public void onActivityStarted( Activity activity) { + public void onActivityStarted(Activity activity) { if (mStartedActivities.isEmpty()) { mIsAppActive = true; - notifyAppStateChanged( AppStateListener.ACTIVE); + notifyAppStateChanged(AppStateListener.ACTIVE); } mStartedActivities.add(activity); @@ -58,11 +58,11 @@ public class ActivityLifecycleManager { } @Override - public void onActivityStopped( Activity activity) { + public void onActivityStopped(Activity activity) { mStartedActivities.remove(activity); if (mStartedActivities.isEmpty()) { mIsAppActive = false; - notifyAppStateChanged( AppStateListener.INACTIVE); + notifyAppStateChanged(AppStateListener.INACTIVE); } ActivityTrace trace = mAliveActivities.get(activity); @@ -72,7 +72,7 @@ public class ActivityLifecycleManager { } @Override - public void onActivityResumed( Activity activity) { + public void onActivityResumed(Activity activity) { mCurrentResumedActivity = activity; ActivityTrace trace = mAliveActivities.get(activity); if (trace != null) { @@ -81,7 +81,7 @@ public class ActivityLifecycleManager { } @Override - public void onActivityPaused( Activity activity) { + public void onActivityPaused(Activity activity) { ActivityTrace trace = mAliveActivities.get(activity); if (trace != null) { trace.pauseCnt++; @@ -89,33 +89,34 @@ public class ActivityLifecycleManager { } @Override - public void onActivityCreated( Activity activity, Bundle savedInstanceState) { + public void onActivityCreated(Activity activity, Bundle savedInstanceState) { mAliveActivities.put(activity, new ActivityTrace(activity)); } @Override - public void onActivityDestroyed( Activity activity) { + public void onActivityDestroyed(Activity activity) { mAliveActivities.remove(activity); } }; - private ActivityLifecycleManager() {} + private ActivityLifecycleManager() { + } public static ActivityLifecycleManager getInstance() { return SingletonHolder.INSTANCE; } - private static class SingletonHolder{ + private static class SingletonHolder { private static final ActivityLifecycleManager INSTANCE = new ActivityLifecycleManager(); } - public void start( Application application) { + public void start(Application application) { this.mApplication = application; registerInnerActivityListener(); registerHomeKeyEventReceiver(); } - public void stop(){ + public void stop() { unregisterActivityLifecycleCallbacks(mInnerActivityListener); unregisterHomeKeyEventReceiver(); } @@ -125,12 +126,12 @@ public class ActivityLifecycleManager { * * @param callbacks Activity 生命周期的回调 */ - public void registerActivityLifecycleCallbacks( Application.ActivityLifecycleCallbacks callbacks) { + public void registerActivityLifecycleCallbacks(Application.ActivityLifecycleCallbacks callbacks) { if (mApplication == null) { return; } - if ( Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) { return; } @@ -142,12 +143,12 @@ public class ActivityLifecycleManager { * * @param callbacks Activity 生命周期的回调 */ - public void unregisterActivityLifecycleCallbacks( Application.ActivityLifecycleCallbacks callbacks) { + public void unregisterActivityLifecycleCallbacks(Application.ActivityLifecycleCallbacks callbacks) { if (mApplication == null) { return; } - if ( Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) { return; } @@ -161,7 +162,11 @@ public class ActivityLifecycleManager { return mIsAppActive; } - public Activity getCurrentActivity(){ + public void setAppActive(boolean appActive) { + mIsAppActive = appActive; + } + + public Activity getCurrentActivity() { return mCurrentResumedActivity; } @@ -248,7 +253,7 @@ public class ActivityLifecycleManager { private void registerHomeKeyEventReceiver() { android.content.IntentFilter filter = new android.content.IntentFilter(); - filter.addAction( Intent.ACTION_CLOSE_SYSTEM_DIALOGS); + filter.addAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS); mHomeKeyEventReceiver = new HomeKeyEventReceiver(); mApplication.registerReceiver(mHomeKeyEventReceiver, filter); @@ -267,31 +272,45 @@ public class ActivityLifecycleManager { } } - @TargetApi( Build.VERSION_CODES.ICE_CREAM_SANDWICH) + @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) public static abstract class DefActivityLifecycleCallbacks implements Application.ActivityLifecycleCallbacks { @Override - public void onActivityCreated( Activity activity, Bundle savedInstanceState) {} + public void onActivityCreated(Activity activity, Bundle savedInstanceState) { + } + @Override - public void onActivityStarted( Activity activity) {} + public void onActivityStarted(Activity activity) { + } + @Override - public void onActivityResumed( Activity activity) {} + public void onActivityResumed(Activity activity) { + } + @Override - public void onActivityPaused( Activity activity) {} + public void onActivityPaused(Activity activity) { + } + @Override - public void onActivityStopped( Activity activity) {} + public void onActivityStopped(Activity activity) { + } + @Override - public void onActivitySaveInstanceState( Activity activity, Bundle outState) {} + public void onActivitySaveInstanceState(Activity activity, Bundle outState) { + } + @Override - public void onActivityDestroyed( Activity activity) {} + public void onActivityDestroyed(Activity activity) { + } } public interface AppStateListener { int INACTIVE = 0; int ACTIVE = 1; + /** * App 状态的回调 */ - void onStateChanged( int state ); + void onStateChanged(int state); } @@ -312,7 +331,7 @@ public class ActivityLifecycleManager { int startCnt; int stopCnt; - ActivityTrace( Activity activity) { + ActivityTrace(Activity activity) { this.activity = activity; } } @@ -322,9 +341,9 @@ public class ActivityLifecycleManager { private final String SYSTEM_DIALOG_REASON_HOME_KEY = "homekey"; @Override - public void onReceive( Context context, Intent intent) { + public void onReceive(Context context, Intent intent) { String action = intent.getAction(); - if ( Intent.ACTION_CLOSE_SYSTEM_DIALOGS.equals(action)) { + if (Intent.ACTION_CLOSE_SYSTEM_DIALOGS.equals(action)) { String reason = intent.getStringExtra(SYSTEM_DIALOG_REASON_KEY); if (reason != null && reason.equals(SYSTEM_DIALOG_REASON_HOME_KEY)) { onHomeKeyPressed(); diff --git a/main-extensions/mogo-module-main-launcher/src/main/java/com/zhidao/mogo/module/main/launcher/MainLauncherActivity.java b/main-extensions/mogo-module-main-launcher/src/main/java/com/zhidao/mogo/module/main/launcher/MainLauncherActivity.java index 30310154e1..cc4965c322 100644 --- a/main-extensions/mogo-module-main-launcher/src/main/java/com/zhidao/mogo/module/main/launcher/MainLauncherActivity.java +++ b/main-extensions/mogo-module-main-launcher/src/main/java/com/zhidao/mogo/module/main/launcher/MainLauncherActivity.java @@ -31,6 +31,7 @@ import com.mogo.service.intent.IMogoIntentListener; import com.mogo.eagle.core.function.api.map.smp.IMogoSmallMapProvider; import com.mogo.service.statusmanager.StatusDescriptor; import com.mogo.service.v2x.IV2XWarningListener; +import com.mogo.utils.ActivityLifecycleManager; import com.mogo.utils.logger.Logger; /** @@ -90,6 +91,7 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis protected void onStart() { super.onStart(); getApis().getIntentManagerApi().registerIntentListener(Intent.ACTION_CLOSE_SYSTEM_DIALOGS, this); + ActivityLifecycleManager.getInstance().setAppActive(true); } @Override @@ -102,6 +104,7 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis protected void onStop() { super.onStop(); getApis().getIntentManagerApi().unregisterIntentListener(Intent.ACTION_CLOSE_SYSTEM_DIALOGS, this); + ActivityLifecycleManager.getInstance().setAppActive(false); } @Override