public static boolean isInBackground(Context context) { ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); List<ActivityManager.RunningAppProcessInfo> runningProcesses = am.getRunningAppProcesses(); boolean isInBackground = true; for (ActivityManager.RunningAppProcessInfo processInfo : runningProcesses) { for (String activeProcess : processInfo.pkgList) { if (activeProcess.equals(context.getPackageName())) { if (processInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) { isInBackground = false; } return isInBackground; } } } return isInBackground; }
注: 在N的multi-windows 模式下,inactive的app(可见),上面的方法返回false