两种方式:
1、通过上下文环境获取ActivityManager(activity管理器)。
2、从ActivityManager中获取正在运行的进程集合。
3、遍历这个集合获取每个进程的名称和当前应用的包名作比较。
/**
* 判断当前应用是否是在前台运行
* @param context
* @return
*/
public static boolean isAppForground(Context context) {
ActivityManager activityManager = (ActivityManager) context
.getSystemService(Service.ACTIVITY_SERVICE);
List<RunningAppProcessInfo> runningAppProcesses = activityManager
.getRunningAppProcesses();// 获取正在运行的进程
if (runningAppProcesses == null) {
return false;
}
for (ActivityManager.RunningAppProcessInfo processInfo : runningAppProcesses) {
if (processInfo.processName.equals(context.getPackageName())
&& processInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
return true;
}
}
return false;
}
2.
1、获取Activity的管理器
2、从管理器中获取第一个运行的activity的包名。
/**
* 判断当前应用是否是在前台运行
*
* @param context
* @return
*/
public static boolean isRunningGoreground(Context context) {
ActivityManager am = (ActivityManager) context
.getSystemService(context.ACTIVITY_SERVICE);
ComponentName cn = am.getRunningTasks(1).get(0).topActivity;
String currentPackageName = cn.getPackageName();// 获取包名
if (!TextUtils.isEmpty(currentPackageName)
&& currentPackageName.equals(context.getPackageName())) {
return true;
}
return false;
}