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

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.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 当前应用的版本名称

View File

@@ -17,14 +17,14 @@ public class ActivityLifecycleManager {
/**
* 当前出于 Start 状态的 Activity
*/
private ArrayList< Activity > mStartedActivities = new ArrayList<>();
private ArrayList<Activity> mStartedActivities = new ArrayList<>();
private ArrayList<AppStateListener> mAppStateListeners = new ArrayList<>();
/**
* 当前存活的 Activity
*/
private HashMap< Activity, ActivityTrace> mAliveActivities = new HashMap<>();
private HashMap<Activity, ActivityTrace> 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();

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.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