Andoid获取应用程序的运行状态常用的两种方法:ActivityManager.getRunningAppProcesses()和ActivityManager.getRunningTasks()
1. 由于考虑到安全性ActivityManager.getRunningTasks(),在5.0上已经deprecated了
2. 在Android 5.0以上系统,调用getRunningAppProcesses 方法返回的列表中只有该应用本身一个,也因为谷歌考虑到安全原因
3. 第三个方法,是ProcessManager.getRunningAppProcesses(),要加载外部jar: app_process_library.jar
实际测试中,如下:
public boolean isAppOnForeground() {
ActivityManager activityManager = (ActivityManager) getApplicationContext()
.getSystemService(Context.ACTIVITY_SERVICE);
String packageName = context.getPackageName();
/**
* 获取Android设备中所有正在运行的App
* 在6.0和5.1.1的手机上,只返回本应用的包名且只有一个
* 在天誉5.1.1的车载系统,签名应用可以用这个接口
*/
List<RunningAppProcessInfo> appProcesses = activityManager
.getRunningAppProcesses();
if (appProcesses == null)
return false;
MyLog.i(TAG, "list size:"+appProcesses.size());
for (RunningAppProcessInfo appProcess : appProcesses) {
// The name of the process that this object is associated with.
MyLog.i(TAG, "appName:"+appProcess.processName+" appImportance:"+appProcess.importance);
if(appProcess.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND &&
appProcess.processName.equals(packageName))
{
//appProcess.importanceReasonCode==0是什么?
return true;
}
}
/**
* 在6.0和5.1.1的手机上只返回本应用包名和桌面两个包名
* 在天誉5.1.1的车载系统,签名应用可以用这个接口
*/
List<RunningTaskInfo> infos = activityManager.getRunningTasks(10);//获取当前正在运行的应用列表
MyLog.i(TAG, "task info list size:"+infos.size());
for (RunningTaskInfo info : infos) {
MyLog.i(TAG,"((((((((((topactivity:"+info.topActivity.getPackageName()+" baseactivity:"+info.baseActivity.getPackageName());
if(info.topActivity.getPackageName().equals(packageName) && info.baseActivity.getPackageName().equals(packageName))
{
return true;
}
}
/**需要加载外部jar:app_process_library.jar
* 在6.0和5.1.1的手机上可以用
* 在天誉5.1.1的车载系统,list 数量为0
*/
List<AndroidAppProcess> processInfos = ProcessManager.getRunningAppProcesses();
MyLog.i(TAG,"%%%%%%%%%%%%%%%appProcess list size:"+processInfos.size());
for (AndroidAppProcess processInfo : processInfos) {
// 应用程序的包名
if(processInfo.name.equals(packageName) && processInfo.foreground == true)
{
return true;
}
}
return false;
}
参考:http://blog.youkuaiyun.com/baidu_23478311/article/details/50475219
http://blog.youkuaiyun.com/brycegao321/article/details/53292649
外部jar下载地址:http://download.youkuaiyun.com/download/baidu_23478311/9394372