判斷是APP是否在後臺:
public static boolean isAppInBackground(Context context) {
ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
List<ActivityManager.RunningAppProcessInfo> runningProcesses = manager.getRunningAppProcesses();
if (!StringUtil.isListEmpty(runningProcesses)) {
for (ActivityManager.RunningAppProcessInfo runningProcess : runningProcesses) {
if (runningProcess.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
return false;
}
}
}
} else {
String myPackage = context.getPackageName();
List<ActivityManager.RunningTaskInfo> task = manager.getRunningTasks(1);
if (!StringUtil.isListEmpty(task)) {
ComponentName info = task.get(0).topActivity;
if (null != info) {
return !myPackage.equals(info.getPackageName());
}
}
}
return true;
}
注意:在android5.0以上,只能判斷是否前後臺, 但是不能判斷app是否是在最上面的那個APP。因爲有可能有多個在前臺的APP。