Android L中getRunningTasks的替代方案

MRK*_*MRK 26 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吗?有人能指出我的文档吗?

ben*_*n75 21

您的问题中提到的系统统计信息api也在这里提供,详细的API在这里.据我所知,此API不允许您获取当前的顶级活动.

即你有能力通过使用但是根据javadoc接收UsageEvent类型:MOVE_TO_FOREGROUNDUsageStatsManager.queryEvents

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

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

在另一方面,如果你只在顶部活动有兴趣的自己的应用程序:您可以使用getAppTasks()返回List<AppTask>那里你可以得到的RecentTaskInfogetTaskInfo


编辑:此处提供另一种方法.

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