Android L中getRunningTasks的替代方案

Android L中getRunningTasks的替代方案,android,android-5.0-lollipop,Android,Android 5.0 Lollipop,有很好的文件证明,getRunningTasks现在在Android L中不受欢迎。我用它来获得顶级活动,这是我应用程序的一个重要功能。虽然尚未完成,但谷歌的一名员工已经承诺在安卓L上提供一个新的解决方案。解决方案指出: “对于L,我们确实计划有一个新的解决方案来解决getRecentTasks()的一些现有用例:我们希望以一种新的扩展形式公开系统的内部使用统计服务,该服务可通过SDK提供给第三方应用程序 新的usage stats服务应该有两个主要信息。首先,它将提供用户在每个应用程序中花费的

有很好的文件证明,getRunningTasks现在在Android L中不受欢迎。我用它来获得顶级活动,这是我应用程序的一个重要功能。虽然尚未完成,但谷歌的一名员工已经承诺在安卓L上提供一个新的解决方案。解决方案指出:

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

新的usage stats服务应该有两个主要信息。首先,它将提供用户在每个应用程序中花费的时间的聚合统计数据,以及这些应用程序的上次启动时间,按天、周、月和年进行汇总。其次,它将包括过去几天的详细使用事件,描述时间和组件任何活动转换到前台或后台时的名称

要访问此新的使用情况数据,用户需要通过新的设置UI明确授予应用程序访问使用情况统计信息的权限。他们将能够在任何时候查看所有具有访问权限和撤销访问权限的应用程序

我意识到这并不能涵盖旧getRecentsTask API的所有可能用途,对此我深表歉意。然而,对于我们所看到的API当前的主要用途,一个新的usage stats API应该更加健壮和高效。”

您可以在此处阅读更多信息:


我试着在Android L文档中查找,但找不到任何与上面提到的usage stats服务相关的内容。有人使用过这个API吗?有人能给我指一下这方面的文档吗?

还提供了您问题中提到的系统统计api,详细的api如下所示。据我所知,此API不允许您获取当前的顶级活动

i、 e.您有能力通过使用但符合以下条件接收类型:

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

因此,它实际上是一个获取统计信息的API,而不是获取实时信息的API。(请注意,现在已弃用的
getRunningTasks()
既不用于检索实时数据:)

另一方面,如果你只对自己的应用程序的顶级活动感兴趣,你可以使用返回一个你可以使用的


编辑:提供了另一种方法


它基于和。缺点:它需要额外的权限,只提供包名,而不提供活动名,但提供实时数据。

“我用它来获取顶级活动”。你的意思是你的应用程序的顶级活动吗?或者任何应用程序的顶级活动?请在另一个帖子中查看我的答案谢谢。这正是我想要的。我在暗示某种应用程序锁定,因此,从这个信息-对我来说-如果应用程序被留下,重新启动,我无法获得任何有效信息,对吗?或者你可能得到了什么提示?你是对的,文档中说
queryEvents
的最后几分钟被截断了,但没有这个问题,可以用于类似的目的。有关示例,请参见。@Sam另一个答案为您提供UsageStats(即聚合数据)而非USAGEENTS,此外,它还需要另一个权限。IMO这两种解决方案都不是不推荐的getRunningTasks()的完美替代方案(如果您需要来自第三方应用程序的任务信息)@ben75,但至少它是一个选项。您的回答意味着您无法实时获取顶级活动,但我链接的代码似乎正是这样做的。是的,您需要权限,但这并不意味着API不适合完全使用。