您的位置:首页 > 移动开发

Android 判断App前后台运行状态

2016-10-10 14:13 369 查看
两种方式:

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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: