app在前台还是后台的判断有很多种,如:
1.在BaseActivity中对Activity的进行保存管理,可以通过根据当前的所有Activity的状态来判断应用是否是在前台显示。
2.在application中注册registerActivityLifecycleCallbacks()的回调,通过回调来判断是否在前台
public class MyApp extends Application {
private static final String TAG = "TEST_APP";
private static int mActivityCount;
@Override
public void onCreate() {
super.onCreate();
registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
}
@Override
public void onActivityStarted(Activity activity) {
mActivityCount++;
if(mActivityCount == 1) {
Log.e(TAG, "后台->前台");
}
}
@Override
public void onActivityResumed(Activity activity) {
}
@Override
public void onActivityPaused(Activity activity) {
}
@Override
public void onActivityStopped(Activity activity) {
mActivityCount--;
if(mActivityCount == 0) {
Log.e(TAG, "前台->后台");
}
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
}
@Override
public void onActivityDestroyed(Activity activity) {
}
});
}
}
3.通过获取系统ActivityManager来判断。
4.其他方法
网友评论