后台监听,应用后台后不做弹框提示

This commit is contained in:
liujing
2021-09-27 19:54:37 +08:00
parent 4f67fecb77
commit a0143e5c93
3 changed files with 62 additions and 35 deletions

View File

@@ -23,6 +23,7 @@ import com.mogo.eagle.core.utilcode.util.ThreadUtils;
import com.mogo.module.service.receiver.MogoReceiver; import com.mogo.module.service.receiver.MogoReceiver;
import com.mogo.service.MogoServicePaths; import com.mogo.service.MogoServicePaths;
import com.mogo.eagle.core.function.api.check.ICheckProvider; import com.mogo.eagle.core.function.api.check.ICheckProvider;
import com.mogo.utils.ActivityLifecycleManager;
import com.mogo.utils.network.RequestOptions; import com.mogo.utils.network.RequestOptions;
import java.util.List; import java.util.List;
@@ -79,7 +80,7 @@ public class VehicleMonitoringManager implements ICheckProvider {
// CheckActivity.start(context); // CheckActivity.start(context);
// } // }
Intent starter = new Intent(context, CheckActivity.class); Intent starter = new Intent(context, CheckActivity.class);
starter.putExtra("CheckResultData",checkResultData); starter.putExtra("CheckResultData", checkResultData);
starter.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); starter.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(starter); context.startActivity(starter);
} }
@@ -144,16 +145,19 @@ public class VehicleMonitoringManager implements ICheckProvider {
return false; return false;
} }
CheckResultData checkResultData; CheckResultData checkResultData;
CheckDialog dialog; CheckDialog dialog;
/** /**
* 指标异常弹框 * 指标异常弹框
*/ */
public void showDialog(Context context) { public void showDialog(Context context) {
try { try {
if (AppUtils.isAppRunning(getPackageName(context)) && if (ActivityLifecycleManager.getInstance().isAppActive() == true &&
(ActivityUtils.getTopActivity() instanceof CheckActivity == false)) { AppUtils.isAppRunning(getPackageName(context)) &&
ActivityUtils.getTopActivity() instanceof CheckActivity == false) {
if (dialog != null) { if (dialog != null) {
dialog.cancel(); dialog.cancel();
} }
@@ -164,6 +168,7 @@ public class VehicleMonitoringManager implements ICheckProvider {
e.printStackTrace(); e.printStackTrace();
} }
} }
/** /**
* @param context * @param context
* @return 当前应用的版本名称 * @return 当前应用的版本名称

View File

@@ -17,14 +17,14 @@ public class ActivityLifecycleManager {
/** /**
* 当前出于 Start 状态的 Activity * 当前出于 Start 状态的 Activity
*/ */
private ArrayList< Activity > mStartedActivities = new ArrayList<>(); private ArrayList<Activity> mStartedActivities = new ArrayList<>();
private ArrayList<AppStateListener> mAppStateListeners = new ArrayList<>(); private ArrayList<AppStateListener> mAppStateListeners = new ArrayList<>();
/** /**
* 当前存活的 Activity * 当前存活的 Activity
*/ */
private HashMap< Activity, ActivityTrace> mAliveActivities = new HashMap<>(); private HashMap<Activity, ActivityTrace> mAliveActivities = new HashMap<>();
/** /**
* App 是否出于前台 * App 是否出于前台
@@ -44,10 +44,10 @@ public class ActivityLifecycleManager {
private DefActivityLifecycleCallbacks mInnerActivityListener = new DefActivityLifecycleCallbacks() { private DefActivityLifecycleCallbacks mInnerActivityListener = new DefActivityLifecycleCallbacks() {
@Override @Override
public void onActivityStarted( Activity activity) { public void onActivityStarted(Activity activity) {
if (mStartedActivities.isEmpty()) { if (mStartedActivities.isEmpty()) {
mIsAppActive = true; mIsAppActive = true;
notifyAppStateChanged( AppStateListener.ACTIVE); notifyAppStateChanged(AppStateListener.ACTIVE);
} }
mStartedActivities.add(activity); mStartedActivities.add(activity);
@@ -58,11 +58,11 @@ public class ActivityLifecycleManager {
} }
@Override @Override
public void onActivityStopped( Activity activity) { public void onActivityStopped(Activity activity) {
mStartedActivities.remove(activity); mStartedActivities.remove(activity);
if (mStartedActivities.isEmpty()) { if (mStartedActivities.isEmpty()) {
mIsAppActive = false; mIsAppActive = false;
notifyAppStateChanged( AppStateListener.INACTIVE); notifyAppStateChanged(AppStateListener.INACTIVE);
} }
ActivityTrace trace = mAliveActivities.get(activity); ActivityTrace trace = mAliveActivities.get(activity);
@@ -72,7 +72,7 @@ public class ActivityLifecycleManager {
} }
@Override @Override
public void onActivityResumed( Activity activity) { public void onActivityResumed(Activity activity) {
mCurrentResumedActivity = activity; mCurrentResumedActivity = activity;
ActivityTrace trace = mAliveActivities.get(activity); ActivityTrace trace = mAliveActivities.get(activity);
if (trace != null) { if (trace != null) {
@@ -81,7 +81,7 @@ public class ActivityLifecycleManager {
} }
@Override @Override
public void onActivityPaused( Activity activity) { public void onActivityPaused(Activity activity) {
ActivityTrace trace = mAliveActivities.get(activity); ActivityTrace trace = mAliveActivities.get(activity);
if (trace != null) { if (trace != null) {
trace.pauseCnt++; trace.pauseCnt++;
@@ -89,33 +89,34 @@ public class ActivityLifecycleManager {
} }
@Override @Override
public void onActivityCreated( Activity activity, Bundle savedInstanceState) { public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
mAliveActivities.put(activity, new ActivityTrace(activity)); mAliveActivities.put(activity, new ActivityTrace(activity));
} }
@Override @Override
public void onActivityDestroyed( Activity activity) { public void onActivityDestroyed(Activity activity) {
mAliveActivities.remove(activity); mAliveActivities.remove(activity);
} }
}; };
private ActivityLifecycleManager() {} private ActivityLifecycleManager() {
}
public static ActivityLifecycleManager getInstance() { public static ActivityLifecycleManager getInstance() {
return SingletonHolder.INSTANCE; return SingletonHolder.INSTANCE;
} }
private static class SingletonHolder{ private static class SingletonHolder {
private static final ActivityLifecycleManager INSTANCE = new ActivityLifecycleManager(); private static final ActivityLifecycleManager INSTANCE = new ActivityLifecycleManager();
} }
public void start( Application application) { public void start(Application application) {
this.mApplication = application; this.mApplication = application;
registerInnerActivityListener(); registerInnerActivityListener();
registerHomeKeyEventReceiver(); registerHomeKeyEventReceiver();
} }
public void stop(){ public void stop() {
unregisterActivityLifecycleCallbacks(mInnerActivityListener); unregisterActivityLifecycleCallbacks(mInnerActivityListener);
unregisterHomeKeyEventReceiver(); unregisterHomeKeyEventReceiver();
} }
@@ -125,12 +126,12 @@ public class ActivityLifecycleManager {
* *
* @param callbacks Activity 生命周期的回调 * @param callbacks Activity 生命周期的回调
*/ */
public void registerActivityLifecycleCallbacks( Application.ActivityLifecycleCallbacks callbacks) { public void registerActivityLifecycleCallbacks(Application.ActivityLifecycleCallbacks callbacks) {
if (mApplication == null) { if (mApplication == null) {
return; return;
} }
if ( Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
return; return;
} }
@@ -142,12 +143,12 @@ public class ActivityLifecycleManager {
* *
* @param callbacks Activity 生命周期的回调 * @param callbacks Activity 生命周期的回调
*/ */
public void unregisterActivityLifecycleCallbacks( Application.ActivityLifecycleCallbacks callbacks) { public void unregisterActivityLifecycleCallbacks(Application.ActivityLifecycleCallbacks callbacks) {
if (mApplication == null) { if (mApplication == null) {
return; return;
} }
if ( Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
return; return;
} }
@@ -161,7 +162,11 @@ public class ActivityLifecycleManager {
return mIsAppActive; return mIsAppActive;
} }
public Activity getCurrentActivity(){ public void setAppActive(boolean appActive) {
mIsAppActive = appActive;
}
public Activity getCurrentActivity() {
return mCurrentResumedActivity; return mCurrentResumedActivity;
} }
@@ -248,7 +253,7 @@ public class ActivityLifecycleManager {
private void registerHomeKeyEventReceiver() { private void registerHomeKeyEventReceiver() {
android.content.IntentFilter filter = new android.content.IntentFilter(); 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(); mHomeKeyEventReceiver = new HomeKeyEventReceiver();
mApplication.registerReceiver(mHomeKeyEventReceiver, filter); 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 { public static abstract class DefActivityLifecycleCallbacks implements Application.ActivityLifecycleCallbacks {
@Override @Override
public void onActivityCreated( Activity activity, Bundle savedInstanceState) {} public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
}
@Override @Override
public void onActivityStarted( Activity activity) {} public void onActivityStarted(Activity activity) {
}
@Override @Override
public void onActivityResumed( Activity activity) {} public void onActivityResumed(Activity activity) {
}
@Override @Override
public void onActivityPaused( Activity activity) {} public void onActivityPaused(Activity activity) {
}
@Override @Override
public void onActivityStopped( Activity activity) {} public void onActivityStopped(Activity activity) {
}
@Override @Override
public void onActivitySaveInstanceState( Activity activity, Bundle outState) {} public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
}
@Override @Override
public void onActivityDestroyed( Activity activity) {} public void onActivityDestroyed(Activity activity) {
}
} }
public interface AppStateListener { public interface AppStateListener {
int INACTIVE = 0; int INACTIVE = 0;
int ACTIVE = 1; int ACTIVE = 1;
/** /**
* App 状态的回调 * App 状态的回调
*/ */
void onStateChanged( int state ); void onStateChanged(int state);
} }
@@ -312,7 +331,7 @@ public class ActivityLifecycleManager {
int startCnt; int startCnt;
int stopCnt; int stopCnt;
ActivityTrace( Activity activity) { ActivityTrace(Activity activity) {
this.activity = activity; this.activity = activity;
} }
} }
@@ -322,9 +341,9 @@ public class ActivityLifecycleManager {
private final String SYSTEM_DIALOG_REASON_HOME_KEY = "homekey"; private final String SYSTEM_DIALOG_REASON_HOME_KEY = "homekey";
@Override @Override
public void onReceive( Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
String action = intent.getAction(); 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); String reason = intent.getStringExtra(SYSTEM_DIALOG_REASON_KEY);
if (reason != null && reason.equals(SYSTEM_DIALOG_REASON_HOME_KEY)) { if (reason != null && reason.equals(SYSTEM_DIALOG_REASON_HOME_KEY)) {
onHomeKeyPressed(); onHomeKeyPressed();

View File

@@ -31,6 +31,7 @@ import com.mogo.service.intent.IMogoIntentListener;
import com.mogo.eagle.core.function.api.map.smp.IMogoSmallMapProvider; import com.mogo.eagle.core.function.api.map.smp.IMogoSmallMapProvider;
import com.mogo.service.statusmanager.StatusDescriptor; import com.mogo.service.statusmanager.StatusDescriptor;
import com.mogo.service.v2x.IV2XWarningListener; import com.mogo.service.v2x.IV2XWarningListener;
import com.mogo.utils.ActivityLifecycleManager;
import com.mogo.utils.logger.Logger; import com.mogo.utils.logger.Logger;
/** /**
@@ -90,6 +91,7 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis
protected void onStart() { protected void onStart() {
super.onStart(); super.onStart();
getApis().getIntentManagerApi().registerIntentListener(Intent.ACTION_CLOSE_SYSTEM_DIALOGS, this); getApis().getIntentManagerApi().registerIntentListener(Intent.ACTION_CLOSE_SYSTEM_DIALOGS, this);
ActivityLifecycleManager.getInstance().setAppActive(true);
} }
@Override @Override
@@ -102,6 +104,7 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis
protected void onStop() { protected void onStop() {
super.onStop(); super.onStop();
getApis().getIntentManagerApi().unregisterIntentListener(Intent.ACTION_CLOSE_SYSTEM_DIALOGS, this); getApis().getIntentManagerApi().unregisterIntentListener(Intent.ACTION_CLOSE_SYSTEM_DIALOGS, this);
ActivityLifecycleManager.getInstance().setAppActive(false);
} }
@Override @Override