package com.gh.common.util; import android.Manifest; import android.app.ActivityManager; import android.app.ActivityManager.RunningAppProcessInfo; import android.app.ActivityManager.RunningTaskInfo; import android.content.ComponentName; import android.content.Context; import android.support.annotation.RequiresPermission; import java.util.List; public class RunningUtils { /** * 判断当前应用程序处于前台还是后台 */ @RequiresPermission(Manifest.permission.GET_TASKS) public static boolean isApplicationBroughtToBackground(Context context) { ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); List tasks = am.getRunningTasks(1); if (!tasks.isEmpty()) { ComponentName topActivity = tasks.get(0).topActivity; if (!topActivity.getPackageName().equals(context.getPackageName())) { return true; } } return false; } /** * 判断当前应用程序处于前台还是后台 */ public static boolean isBackground(Context context) { ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); List appProcesses = activityManager.getRunningAppProcesses(); for (RunningAppProcessInfo appProcess : appProcesses) { if (appProcess.processName.equals(context.getPackageName())) { if (appProcess.importance == RunningAppProcessInfo.IMPORTANCE_BACKGROUND) { return true; } else { return false; } } } return false; } /** * 判断当前topactivity是否与传入的相同 */ @RequiresPermission(Manifest.permission.GET_TASKS) public static boolean isEqualsTop(Context context, String activityName) { ActivityManager activityManager = (ActivityManager) context .getSystemService(Context.ACTIVITY_SERVICE); List infos = activityManager.getRunningTasks(100); for (RunningTaskInfo info : infos) { if (info.topActivity.getClassName().equals(activityName)) { return true; } } return false; } /** * 判断当前baseActivity是否与传入的相同 */ @RequiresPermission(Manifest.permission.GET_TASKS) public static boolean isEqualsBase(Context context, String activityName) { ActivityManager activityManager = (ActivityManager) context .getSystemService(Context.ACTIVITY_SERVICE); List infos = activityManager.getRunningTasks(100); for (RunningTaskInfo info : infos) { if (info.baseActivity.getClassName().equals(activityName)) { return true; } } return false; } /** * 判断应用是否正在运行 */ @RequiresPermission(Manifest.permission.GET_TASKS) public static boolean isRunning(Context context) { ActivityManager activityManager = (ActivityManager) context .getSystemService(Context.ACTIVITY_SERVICE); List infos = activityManager.getRunningTasks(100); for (RunningTaskInfo info : infos) { if (info.topActivity.getPackageName().equals(context.getPackageName()) && info.baseActivity.getPackageName().equals(context.getPackageName())) { return true; } } return false; } /** * 获取当前baseActivity */ @RequiresPermission(Manifest.permission.GET_TASKS) public static String getBaseActivity(Context context) { ActivityManager activityManager = (ActivityManager) context .getSystemService(Context.ACTIVITY_SERVICE); List infos = activityManager.getRunningTasks(100); for (RunningTaskInfo info : infos) { if (info.baseActivity.getPackageName().equals(context.getPackageName())) { return info.baseActivity.getClassName(); } } return null; } /** * 获取当前topActivity */ @RequiresPermission(Manifest.permission.GET_TASKS) public static String getTopActivity(Context context) { ActivityManager activityManager = (ActivityManager) context .getSystemService(Context.ACTIVITY_SERVICE); List infos = activityManager.getRunningTasks(100); for (RunningTaskInfo info : infos) { if (info.topActivity.getPackageName().equals( context.getPackageName())) { return info.topActivity.getClassName(); } } return null; } }