两种方法,
当切换页面的时候 onPause()、 onStop() 中返回都是在前台,
当退出应用时 onStop()、onDestroy() 返回都是在后台,
可以放在 onStop() 中判断离开当前页面时是因为切换了Activity还是退出程序(只是存在这样的判断方式,当然不是绝对准确的,还存在很多其他的影响条件,使Activity的生命周不会老老实实的P->S->D的退出应用。)
后台运行的属性
ActivityManager.RunningAppProcessInfo.IMPORTANCE_BACKGROUND
前台运行的属性
ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND
具体使用方式:
/**
* 判断程序是否在后台运行
* @param context 上下文对象
* @return true 表示在后台运行
* false 表示在前台
*/
public static boolean isRunBackground(Context context) {
ActivityManager activityManager = (ActivityManager) context
.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> appProcesses = activityManager
.getRunningAppProcesses();
for (ActivityManager.RunningAppProcessInfo appProcess : appProcesses) {
if (appProcess.processName.equals(context.getPackageName())) {
if (appProcess.importance == ActivityManager.RunningAppProcessInfo
.IMPORTANCE_BACKGROUND) {
return true;
} else {
return false;
}
}
}
return false;
}
/**
* 判断程序是否在前台运行(当前运行的程序)
* @return true 代表在前台
* false 代表后台
*/
public boolean isRunForeground() {
ActivityManager activityManager = (ActivityManager) getApplicationContext()
.getSystemService(Context.ACTIVITY_SERVICE);
String packageName = getApplicationContext().getPackageName();
List<ActivityManager.RunningAppProcessInfo> appProcesses = activityManager
.getRunningAppProcesses();
if (appProcesses == null){
return false;
}
for (ActivityManager.RunningAppProcessInfo appProcess : appProcesses) {
if (appProcess.processName.equals(packageName)
&& appProcess.importance == ActivityManager.RunningAppProcessInfo
.IMPORTANCE_FOREGROUND) {
return true;
}
}
return false;
}