获取Android正在运行的任务和服务
2014-12-17 11:05
351 查看
检测某ActivityUpdate是否在当前Task的栈顶
判断Android应用是否在前台
获取Android手机内安装的所有桌面
Android 判断程序前后台状态
Android系统内部状态信息的相关api:
得到ActivityManager :
ActivityManager activityManager = (ActivityManager)this.getSystemService(ACTIVITY_SERVICE)
这个位查到底是什么信息:
ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();
获取进程内存状态的信息:
Debug.MemoryInfo[] processMemoryInfo = activityManager.getProcessMemoryInfo(processIds);
获取当前运行的service信息:
List<RunningServiceInfo> runningServiceInfos = activityManager.getRunningServices(MaxValue);
获取当前运行的任务信息:
List<RunningTaskInfo> runningTaskInfos = activityManager.getRunningTasks(MaxValue);
其中runningTaskInfos 的 topActivity就是当前Task的活跃Activity
在getRunningTasks()所返回的Task队列中系统会根据这些Task的活跃度有一个排序,越活跃越是靠前。第一个就是当前活动的Task
/**
* 检测某ActivityUpdate是否在当前Task的栈顶
*/
public boolean isTopActivy(String cmdName){
ActivityManager manager = (ActivityManager) context.getSystemService(ACTIVITY_SERVICE);
List<RunningTaskInfo> runningTaskInfos = manager.getRunningTasks(1);
String cmpNameTemp = null;
if(null != runningTaskInfos){
cmpNameTemp=(runningTaskInfos.get(0).topActivity).toString);
Log.e("cmpname","cmpname:"+cmpName);
}
if(null == cmpNameTemp)return false;
return cmpNameTemp.equals(cmdName);
}
最后在应用中添加所需的权限:
<uses-permission android:name="android.permission.GET_TASKS"/>
public static boolean isTopActivy(String cmdName, Context context) { ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); List<RunningTaskInfo> runningTaskInfos = manager.getRunningTasks(Integer.MAX_VALUE); String cmpNameTemp = null; if (null != runningTaskInfos) { cmpNameTemp = (runningTaskInfos.get(0).topActivity).toString(); } if (null == cmpNameTemp) { return false; } return cmpNameTemp.equals(cmdName); }
判断Android应用是否在前台
public static boolean isAppOnForeground(Context context) { ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); String packageName = context.getPackageName(); List<RecentTaskInfo> appTask = activityManager.getRecentTasks(Integer.MAX_VALUE, 1); if (appTask == null) { return false; } if (appTask.get(0).baseIntent.toString().contains(packageName)) { return true; } return false; }
获取Android手机内安装的所有桌面
private static List<String> getAllTheLauncher(Context context) { List<String> names = null; PackageManager pkgMgt = context.getPackageManager(); Intent it = new Intent(Intent.ACTION_MAIN); it.addCategory(Intent.CATEGORY_HOME); List<ResolveInfo> ra = pkgMgt.queryIntentActivities(it, 0); if (ra.size() != 0) { names = new ArrayList<String>(); } for (int i = 0; i < ra.size(); i++) { String packageName = ra.get(i).activityInfo.packageName; names.add(packageName); } return names; }
Android 判断程序前后台状态
public static boolean isLauncherRunnig(Context context) { boolean result = false; List<String> names = getAllTheLauncher(context); ActivityManager mActivityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); List<ActivityManager.RunningAppProcessInfo> appList = mActivityManager.getRunningAppProcesses(); for (RunningAppProcessInfo running : appList) { if (running.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND) { for (int i = 0; i < names.size(); i++) { if (names.get(i).equals(running.processName)) { result = true; break; } } } } return result; }
Android系统内部状态信息的相关api:
得到ActivityManager :
ActivityManager activityManager = (ActivityManager)this.getSystemService(ACTIVITY_SERVICE)
这个位查到底是什么信息:
ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();
获取进程内存状态的信息:
Debug.MemoryInfo[] processMemoryInfo = activityManager.getProcessMemoryInfo(processIds);
获取当前运行的service信息:
List<RunningServiceInfo> runningServiceInfos = activityManager.getRunningServices(MaxValue);
获取当前运行的任务信息:
List<RunningTaskInfo> runningTaskInfos = activityManager.getRunningTasks(MaxValue);
其中runningTaskInfos 的 topActivity就是当前Task的活跃Activity
在getRunningTasks()所返回的Task队列中系统会根据这些Task的活跃度有一个排序,越活跃越是靠前。第一个就是当前活动的Task
/**
* 检测某ActivityUpdate是否在当前Task的栈顶
*/
public boolean isTopActivy(String cmdName){
ActivityManager manager = (ActivityManager) context.getSystemService(ACTIVITY_SERVICE);
List<RunningTaskInfo> runningTaskInfos = manager.getRunningTasks(1);
String cmpNameTemp = null;
if(null != runningTaskInfos){
cmpNameTemp=(runningTaskInfos.get(0).topActivity).toString);
Log.e("cmpname","cmpname:"+cmpName);
}
if(null == cmpNameTemp)return false;
return cmpNameTemp.equals(cmdName);
}
最后在应用中添加所需的权限:
<uses-permission android:name="android.permission.GET_TASKS"/>
相关文章推荐
- 获取Android正在运行的任务和服务
- Android 获取正在运行的任务和服务
- 获取Android正在运行的任务和服务
- 【总结备用】Android 获取正在运行的任务和服务
- 获取Android正在运行的任务和服务
- 获取Android正在运行的任务和服务
- 获取Android正在运行的任务和服务
- 获取Android正在运行的任务和服务
- 获取Android正在运行的任务和服务
- Android 获取正在运行的任务和服务
- Android 获取正在运行的任务和服务的小例子
- Android 获取正在运行的任务和服务
- Android中获取正在运行的服务-------ActivityManager.RunningServiceInfo的使用
- 安卓(Android)如何获取正在运行服务的详细信息
- Android:分析app、Process、Task之间的区别,以及获取最近运行的程序(近期任务)与正在运行的程序
- Android 获取正在运行的服务 ActivityManager.RunningServiceInfo使用
- Android中获取正在运行的服务-------ActivityManager.RunningServiceInfo的使用
- Android中获取当前正在运行服务信息
- Android中获取正在运行的服务-------ActivityManager.RunningServiceInfo的使用
- Android中获取正在运行的服务-------ActivityManager.RunningServiceInfo的使用