//第一種方法
需要清單文件
<uses-permission Android:name="android.permission.GET_TASKS" />
public static boolean isApplicationBroughtToBackground(final Context context) {
//創(chuàng)建activity管理對(duì)象
ActivityManager activityManager = (ActivityManager) context.getSystemService(ACTIVITY_SERVICE);
//取出RunningTask棧
List<ActivityManager.RunningTaskInfo> list =activityManager.getRunningTasks(1);
//判斷是否為空
if (!list.isEmpty()){
//取出運(yùn)行在棧頂?shù)娜蝿?wù)進(jìn)程
ComponentName componentName = list.get(0).topActivity;
//判斷任務(wù)進(jìn)程的包名是否和想要判斷的程序包名相同
if (componentName.getPackageName().equals(context.getPackageName())){
//相同則說(shuō)明你該程序運(yùn)行在前臺(tái),則返回ture
return true;
}
}
//否則返回false
return false;
}
//第二種方法
public static boolean isBackground(Context context) {
//創(chuàng)建activity管理對(duì)象
ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
//獲取當(dāng)前正在運(yùn)行的進(jìn)程的list
List<ActivityManager.RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses();
//找到需要判斷的程序的進(jìn)程
//從appProcesses把進(jìn)程一個(gè)一個(gè)取出
for (ActivityManager.RunningAppProcessInfo appProcess : appProcesses) {
//判斷包名來(lái)找到自己的程序
if (appProcess.processName.equals(context.getPackageName())) {
/*
* IMPORTANCE_BACKGROUND 后臺(tái)
IMPORTANCE_EMPTY 空
IMPORTANCE_FOREGROUND 前臺(tái)
IMPORTANCE_PERCEPTIBLE //后臺(tái),但是可以和用戶進(jìn)行交互(一般音樂(lè)播放器)
IMPORTANCE_SERVICE 服務(wù)
IMPORTANCE_VISIBLE 可見(jiàn)
* */
//判斷importance屬性是否為IMPORTANCE_BACKGROUND?
if (appProcess.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_BACKGROUND) {
Log.i("后臺(tái)", appProcess.processName);
return true;
}else{
Log.i("前臺(tái)", appProcess.processName);
return false;
}
}
}
return false;
}