android L 变化之 ActivityManager.getRunningTasks不能获取当前的task列表
来源:互联网 发布:建站100元 编辑:程序博客网 时间:2024/05/18 03:23
android L 变化之 ActivityManager.getRunningTasks不能获取当前的task列表了
官方解释如下:
@deprecated Asof {@link android.os.Build.VERSION_CODES#LOLLIPOP}, this method is no longeravailable to third party applications: the introduction of document-centricrecents means it can leak person information to the caller.For backwardscompatibility,it will still retu rn a small subset of its data: at least thecaller's own tasks, and possibly some other tasks such as home that are knownto not be sensitive.
可以通过以下两种方式得到topActivity的信息:
1)利用ActivityManager.getRunningAppProcesses();获得当前正在运行的所有应用程序的进程。然后根据当前进程信息里的importance和processState来确定当前在顶部的进程。不过这里得到的进程信息里只有被载入当前进程的所有包名pkgList,所以只能判断当前列表有没有你需要监控的包名。
private String[] getActivePackages() {
final Set<String> activePackages= new HashSet<String>();
finalList<ActivityManager.RunningAppProcessInfo> processInfos =mActivityManager
.getRunningAppProcesses();
for(ActivityManager.RunningAppProcessInfo processInfo : processInfos) {
if (processInfo.importance ==ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND
&&processInfo.processState ==ActivityManager.START_TASK_TO_FRONT){
activePackages.addAll(Arrays.asList(processInfo.pkgList));
Log.d(TAG,"====processInfo.processState "
+processInfo.processState + processInfo.processName);
}
}
return activePackages.toArray(newString[activePackages.size()]);
}
2) 利用UsageStatsManager,并且调用他的queryUsageStats方法来获得启动的历史记录,调用这个方法需要设置权限“Apps withusage access”。但是这个queryUsageStats只能查询一段时间内的使用状态,如果时间间隔较短,并且一段时间不使用手机,获得的列表就可能为空。
<uses-permission
android:name="android.permission.PACKAGE_USAGE_STATS"
tools:ignore="ProtectedPermissions" />
static classRecentUseComparator implements Comparator<UsageStats> {
@Override
public int compare(UsageStats lhs,UsageStats rhs) {
return (lhs.getLastTimeUsed()> rhs.getLastTimeUsed()) ? -1 : (lhs
.getLastTimeUsed()== rhs.getLastTimeUsed()) ? 0 : 1;
}
}
private StringgetTopPackage() {
Log.d(TAG,"===getTopPackage=");
long ts = System.currentTimeMillis();
RecentUseComparator mRecentComp = newRecentUseComparator();
UsageStatsManager mUsageStatsManager =(UsageStatsManager) getSystemService("usagestats");
List<UsageStats> usageStats =mUsageStatsManager.queryUsageStats(
UsageStatsManager.INTERVAL_BEST,ts - 10000, ts); //查询ts-10000 到ts这段时间内的UsageStats,由于要设定时间限制,所以有可能获取不到
if (usageStats == null)
return "";
if (usageStats.size() == 0)
return "";
Collections.sort(usageStats,mRecentComp);
Log.d(TAG,"====usageStats.get(0).getPackageName()"+ usageStats.get(0).getPackageName());
returnusageStats.get(0).getPackageName();
}
- android L 变化之 ActivityManager.getRunningTasks不能获取当前的task列表
- 获取当前Task 的替代方法,获取最近运行列表
- ActivityManager.getRunningTasks笔记
- ActivityManager之Task、Process
- Android L的API变化
- 获取当前task的topactivity
- 获取当前task的topactivity
- Android 获取内存信息---ActivityManager的使用
- android之ActivityManager
- android 之 ActivityManager
- Android之ActivityManager
- Android之ActivityManager
- Android之ActivityManager
- android之ActivityManager
- android应用开发—获取当前运行的services列表
- Android 获取正在运行的服务 ActivityManager.RunningServiceInfo使用
- getRunningTasks
- getRunningTasks
- json easyUI 日期格式转化
- 编写一个函数,将一个数字字符串转换成这个字符串对应的数字(包括正浮点数、负浮点数) 例如:“12.34“ 返回12.34 “-123.34“ 返回-123.34 函数原型:double my_
- VC对话框贴图效果实现
- Hadoop YARN中内存和CPU两种资源的调度和隔离
- Delta-wave(YY题)
- android L 变化之 ActivityManager.getRunningTasks不能获取当前的task列表
- android apk 防止反编译技术第一篇-加壳技术
- 分类器性能评价:图形方法(1)
- Hibernate 一对一映射(二)
- 精选9个值得学习的 HTML5 效果【附源码】
- 使用JMeter创建数据库(Mysql)测试
- 学习Spring笔记三
- bzoj2006 [NOI2010]超级钢琴 [优先队列|RMQ]
- 【Python】将python的py文件编译成保密的pyc文件