后台监听,应用后台后不做弹框提示
This commit is contained in:
@@ -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 当前应用的版本名称
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user