判断App整体处于前台还是后台

时间:2021-05-08 03:50:29

1、通过RunningTaskInfo类判断(需要额外权限):

复制代码代码如下:

  1. /**
  2. *判断当前应用程序处于前台还是后台
  3. */
  4. public static boolean isApplicationBroughtToBackground(final Context context) {
  5. ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
  6. List<RunningTaskInfo> tasks = am.getRunningTasks(1);
  7. if (!tasks.isEmpty()) {
  8. ComponentName topActivity = tasks.get(0).topActivity;
  9. if (!topActivity.getPackageName().equals(context.getPackageName())) {
  10. return true;
  11. }
  12. }
  13. return false;
  14. }

需要在AndroidMenitfest.xml文件中添加以下权限
复制代码代码如下:

<uses-permission Android:name="android.permission.GET_TASKS" />

2、通过RunningAppProcessInfo类判断(不需要额外权限):

复制代码代码如下:

  1. public static boolean isBackground(Context context) {
  2. ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
  3. List<RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses();
  4. for (RunningAppProcessInfo appProcess : appProcesses) {
  5. if (appProcess.processName.equals(context.getPackageName())) {
  6. if (appProcess.importance == RunningAppProcessInfo.IMPORTANCE_BACKGROUND) {
  7. Log.i("后台", appProcess.processName);
  8. return true;
  9. }else{
  10. Log.i("前台", appProcess.processName);
  11. return false;
  12. }
  13. }
  14. }
  15. return false;
  16. }

在处理推送的时候会用到