在Application中继承 Application.ActivityLifecycleCallbacks ,
并在onCreate()方法中注册监听:registerActivityLifecycleCallbacks(this);
最后通过isForeground来判断即可。具体可查看下面代码:
当然一定要注意多进程的判断:在当前包名下
public class BaseApplication extends MultiDexApplication implements Application.ActivityLifecycleCallbacks {
private int activityCount;//activity的count数
public static boolean isForeground;//是否在前台
private static Context context;
private static Resources resource;
private String TAG = "----BaseApplication ";
protected static String BASE_URL = "";
public static Resources getAppResources() {
return resource;
}
@Override
public void onCreate() {
super.onCreate();
CrashHandler.getInstance().setContext(this);
context = getApplicationContext();
resource = context.getResources();
//全局管理Activity生命周期
registerActivityLifecycleCallbacks(this);
}
public static Context getContext() {
return context;
}
public static void setContext(Context context) {
BaseApplication.context = context;
}
public static boolean debug() {
return BuildConfig.DEBUG;
}
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(getApplicationContext());
}
@Override
public File getCacheDir() {
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
File cacheDir = getExternalCacheDir();
if (cacheDir != null && (cacheDir.exists() || cacheDir.mkdirs())) {
return cacheDir;
}
}
File cacheDir = super.getCacheDir();
return cacheDir;
}
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
Log.e(TAG+"activityCount","-----onActivityCreated="+activityCount);
}
@Override
public void onActivityStarted(Activity activity) {
activityCount++;
Log.e(TAG+"activityCount","-------onActivityStarted="+activityCount);
}
@Override
public void onActivityResumed(Activity activity) {
Log.e(TAG+"activityCount","-------onActivityResumed="+activityCount);
isForeground();
}
@Override
public void onActivityPaused(Activity activity) {
Log.e(TAG+"activityCount","-------onActivityPaused="+activityCount);
}
@Override
public void onActivityStopped(Activity activity) {
activityCount--;
Log.e(TAG+"activityCount","-------onActivityStopped="+activityCount);
isForeground();
}
/**
* 判断是否在前台
*/
private void isForeground() {
if (activityCount>0) {
isForeground = true;
}else {
isForeground=false;
}
Log.e(TAG+"activityCount=",+activityCount+"-------isForeground="+isForeground);
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
Log.e(TAG+"activityCount","-------onActivitySaveInstanceState="+activityCount);
}
@Override
public void onActivityDestroyed(Activity activity) {
Log.e(TAG+"activityCount","-------onActivityDestroyed="+activityCount);
}
}