Android 5.0以上的getRunningTasks失效,该方法可以获得在前台运行的系统进程。可以用getRunningAppProcesses方法暂时替代。

android6.0以上的getRunningAppProcesses也失效,系统关闭了三方软件对系统进程的访问,出于安全考虑。

参考资料:

  • http://blog.csdn.NET/hyhyl1990/article/details/45700447
  • http://www.cnblogs.com/luoyangcn/p/4936830.html

替代方案

  • AndroidProcesses:Get running processes on Android

  • AndroidProcess:判断App位于前台或者后台的6种方法

  • Android 5.1.1 and above - getRunningAppProcesses() returns my application package only

  • Android5.1.+ getRunningAppProcesses()获取运行中进程(第三方开源库)

可以通过以下两种方式得到topActivity的信息:

1、利用ActivityManager.getRunningAppProcesses();获得当前正在运行的所有应用程序的进程。然后根据当前进程信息里的importance和processState来确定当前在顶部的进程。不过这里得到的进程信息里只有被载入当前进程的所有包名pkgList,所以只能判断当前列表有没有你需要监控的包名。

private String[] getActivePackages(Context context) {ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);final Set<String> activePackages= new HashSet<String>();final List<ActivityManager.RunningAppProcessInfo> processInfos = am.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(new String[activePackages.size()]);}

2、利用UsageStatsManager,并且调用他的queryUsageStats方法来获得启动的历史记录,调用这个方法需要设置权限“Apps withusage access”。但是这个queryUsageStats只能查询一段时间内的使用状态,如果时间间隔较短,并且一段时间不使用手机,获得的列表就可能为空。

static class RecentUseComparator implements Comparator<UsageStats>{@Overridepublic int compare(UsageStats lhs,UsageStats rhs) {return (lhs.getLastTimeUsed() > rhs.getLastTimeUsed()) ? -1 : (lhs.getLastTimeUsed()== rhs.getLastTimeUsed()) ? 0 : 1;}}private StringgetTopPackage(Context context) {long ts = System.currentTimeMillis();RecentUseComparator mRecentComp = new RecentUseComparator();UsageStatsManager mUsageStatsManager =(UsageStatsManager) context.getSystemService("usagestats");//查询ts-10000 到ts这段时间内的UsageStats,由于要设定时间限制,所以有可能获取不到List<UsageStats> usageStats =mUsageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_BEST,ts - 10000, ts);  if (usageStats == null) return "";if (usageStats.size() == 0) return "";Collections.sort(usageStats,mRecentComp);Log.d(TAG,"====usageStats.get(0).getPackageName()"+ usageStats.get(0).getPackageName());return usageStats.get(0).getPackageName();}

getRunningTasks和getRunningAppProcesses失效相关推荐

  1. Android getRunningTasks和getRunningAppProcesses失效

    Android 5.0以上的getRunningTasks失效,该方法可以获得在前台运行的系统进程.可以用getRunningAppProcesses方法暂时替代. android6.0以上的getR ...

  2. android L 变化之 ActivityManager.getRunningTasks不能获取当前的task列表

    android L 变化之 ActivityManager.getRunningTasks不能获取当前的task列表了 官方解释如下: @deprecated Asof {@link android. ...

  3. @Transactional注解最容易忽视的三个失效场景!

    @Transactional注解在以下场景中使用,是会失效的,切记! 1.非public方法 spring对注解事务的方法进行校验,修饰符是不是public,不是 public则不会获取@Transa ...

  4. ASP.NET 4.0: 请求验证模式变化导致ValidateRequest=false失效

    ASP.NET请求验证功能可以给我提供应用程序的安全保证,避免站点受到XSS的攻击.但是在一些情况下,我们需要禁用这个功能,比如我们需要使用HtmlEditor来让用户输入一些HTML文本,这时候AS ...

  5. Bqq服务器的缓存文件放什么目录,如何使文件系统缓存失效? - How to invalidate the file system cache? - 开发者知识库...

    30 At least on Windows 7, it seems that attempting to open a volume handle without FILE_SHARE_WRITE ...

  6. vscode 格式化某一段代码_VSCode格式化代码功能失效的bug解决方法

    VSCode格式化代码功能失效的bug解决方法 前不久我装上了 黑苹果,那么为了快速转移开发环境,我使用了VSCode(Visual Studio Code下面简称VSCode)的插件 Setting ...

  7. MSP430低功耗模式-while循环失效

    如下代码实现MSP430G2553单片机两个led交替闪烁 #include <msp430.h> /*** main.c*/ int main(void) {WDTCTL = WDTPW ...

  8. Maven国内源设置 - OSChina国内源失效了,别更新了

    Maven国内源设置 - OSChina国内源失效了,别更新了 原文:http://blog.csdn.net/chwshuang/article/details/52198932 最近在写一个Spr ...

  9. alias重启终端失效的问题

    如果使用命令 alias xx='xxxx' 那么登出以后,别名就会失效.下次登入的时候就不能用了. 为了保持别名可以把它写入.bashrc 在.bashrc的最后写入想要的别名,比如 alias z ...

最新文章

  1. qt与python互联_PYQT5 vscode联合操作qtdesigner的方法
  2. mfc倾斜文本输入_文本检测知识梳理(持续更新)
  3. 光伏电池的simulink仿真及一些原理
  4. C# Note32: 查漏补缺
  5. phpcms文件夹plugin调用怎么写路径 - 代码篇
  6. 荣耀30系列预热视频曝光:前置开孔双摄 侧面看够薄
  7. 疫期公共出行更安心 微信支付上线“新冠肺炎保障”
  8. 回归标准差和残差平方和的关系_ISLR实验:简单线性回归
  9. python3 安装PIL
  10. 二分搜索,欧几里德算法
  11. Android系统启动过程详解
  12. error:bucket is protected
  13. 分享工作中遇到的问题积累经验 事务日志太大导致insert不进数据
  14. 动图ps在html不动了,PS制做的gif动画导出后动图不动了怎么办?
  15. APP上架到各大应用商店的小总结
  16. 在冰山一角之下:情绪分析研究的当前挑战和新方向。
  17. 2022前端面试必问的几个小问题,你学费了吗?
  18. kubeadm High availability cluster
  19. 从topcoder赚钱的方法
  20. 【数学之美】分形——发现隐藏的维度

热门文章

  1. TikTok广告投放指南(基础入门)
  2. 使用SD-WAN策略与传统路由器的OFFICE 365配置
  3. TFS2008 基本安装
  4. Vue 使用 prerender-spa-plugin 添加loading
  5. 为什么 UEFI 方式启动的 U 盘必须使用 FAT32 文件系统?
  6. WPF 10天修炼 第四天- WPF布局容器
  7. 洛谷 P1209 修理牛棚== Codevs 2079 修理牛棚
  8. struts2 ajax请求发现执行action两次原因
  9. (剑指Offer)面试题22:栈的压入、弹出序列
  10. C#中自定义类数组和结构数组的使用