Android L中getRunningTasks的替代方案

时间:2014-10-16 09:10:15

标签: android android-5.0-lollipop

有很多文档证明getRunningTasks现在已在Android L中弃用。我用它来获得热门活动,这是我的应用程序的一个重要功能。虽然不完整,但Google员工已承诺在Android L中推出新的解决方案。解决方案指出:

“对于L,我们计划有一个新的解决方案来解决getRecentTasks()的一些现有用例:我们希望以一种可用的新的扩展形式公开系统的内部使用情况统计服务通过SDK发送给第三方应用。

新的使用统计服务应该包含两个主要信息。首先,它将提供用户在每个应用程序中花费的时间的汇总统计信息,以及这些应用程序的上次启动时间,累计数天,数周,数月和数年。其次,它将包括过去几天的详细使用事件,描述任何活动转移到前台或后台时的时间和ComponentName。

访问此新使用情况数据将要求用户通过新设置UI明确授予应用程序访问使用情况统计信息的权限。他们将能够随时查看所有可以访问和撤消访问权限的应用。

我意识到这不会涵盖旧的getRecentsTask API的所有可能用途,我为此道歉。但是,对于我们认为API的当前主要用途,新的使用统计API应该更加强大和高效。“

您可以在此处详细了解:https://code.google.com/p/android-developer-preview/issues/detail?id=29#c50

我试过查看Android L文档,但找不到任何与上面提到的使用统计服务相关的内容。有人用过这个API吗?有人能指出我的文档吗?

1 个答案:

答案 0 :(得分:21)

您的问题中提到的系统统计信息API也会显示here,详细的API为here。据我所知,此API不允许您获取当前的顶级活动。

即。您可以使用UsageEventMOVE_TO_FOREGROUND根据UsageStatsManager.queryEvents接收javadoc类型的javadoc

  

事件日志的最后几分钟将被截断以防止应用程序滥用。

所以它真的是一个获取统计数据的API,而不是获取实时信息。 (请注意,现已弃用的getRunningTasks()并非旨在检索实时数据:getAppTasks()

另一方面,如果您只对自己的应用的热门活动感兴趣:您可以使用List<AppTask>返回RecentTaskInfo,在那里您可以获得{{ 3}} getTaskInfo


编辑:提供了另一种方法here

它基于UsageStatsUsageStats.getLastTimeUsed()。缺点:它需要额外的权限,并且只提供包名称 - 而不是活动 - ,但它会为您提供实时数据。