//第一种方法
需要清单文件
<uses-permission Android:name="android.permission.GET_TASKS" />
public static boolean isApplicationBroughtToBackground(final Context context) {
//创建activity管理对象
ActivityManager activityManager = (ActivityManager) context.getSystemService(ACTIVITY_SERVICE);
//取出RunningTask栈
List<ActivityManager.RunningTaskInfo> list =activityManager.getRunningTasks(1);
//判断是否为空
if (!list.isEmpty()){
//取出运行在栈顶的任务进程
ComponentName componentName = list.get(0).topActivity;
//判断任务进程的包名是否和想要判断的程序包名相同
if (componentName.getPackageName().equals(context.getPackageName())){
//相同则说明你该程序运行在前台,则返回ture
return true;
}
}
//否则返回false
return false;
}
//第二种方法
public static boolean isBackground(Context context) {
//创建activity管理对象
ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
//获取当前正在运行的进程的list
List<ActivityManager.RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses();
//找到需要判断的程序的进程
//从appProcesses把进程一个一个取出
for (ActivityManager.RunningAppProcessInfo appProcess : appProcesses) {
//判断包名来找到自己的程序
if (appProcess.processName.equals(context.getPackageName())) {
/*
* IMPORTANCE_BACKGROUND 后台
IMPORTANCE_EMPTY 空
IMPORTANCE_FOREGROUND 前台
IMPORTANCE_PERCEPTIBLE //后台,但是可以和用户进行交互(一般音乐播放器)
IMPORTANCE_SERVICE 服务
IMPORTANCE_VISIBLE 可见
* */
//判断importance属性是否为IMPORTANCE_BACKGROUND?
if (appProcess.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_BACKGROUND) {
Log.i("后台", appProcess.processName);
return true;
}else{
Log.i("前台", appProcess.processName);
return false;
}
}
}
return false;
}