Android使用统计返回奇怪的结果

Android使用统计返回奇怪的结果,android,usagestatsmanager,Android,Usagestatsmanager,我正在查看我的使用结果: List<UsageStats> usageStatsList = usm.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, startTime,endTime); List usageStatsList=usm.queryUsageStats(UsageStatsManager.INTERVAL_DAILY,startTime,endTime); 开始时间在午夜之后,结束时间在同一天午夜之前 示例结果

我正在查看我的使用结果:

List<UsageStats> usageStatsList = usm.queryUsageStats(UsageStatsManager.INTERVAL_DAILY,  startTime,endTime);
List usageStatsList=usm.queryUsageStats(UsageStatsManager.INTERVAL_DAILY,startTime,endTime);
开始时间在午夜之后,结束时间在同一天午夜之前

示例结果:

Pkg:com.android.chrome 前场时间:6412秒 最后使用时间:2018年4月19日星期四22:31:17 PDT


Pkg:com.instagram.android 前场时间:5415秒 最后使用时间:2018年4月19日星期四23:11:22 PDT


Pkg:com.android.chrome 前地面时间:5304秒 最后使用时间:2018年4月19日星期四03:00:49 PDT


Pkg:com.instagram.android 前地面时间:5202秒 最后使用时间:2018年4月19日星期四03:00:45 PDT

正如您所看到的,对于某些事情,它会两次返回相同的包,最后使用的时间不同,即使最后使用的时间都在我指定的24小时间隔内

我在这里看到了一系列其他结果:

但似乎无法解决我的问题


有人知道它为什么会这样吗?它似乎与时间有关?尽管我当时睡得很熟,但最后一次使用的时间对某些软件包来说总是说凌晨3点?

我建议看一下
queryandagregateusagestats
()


然而,我自己也遇到了一些与UsageStats有关的问题,请看这里:

我建议看一下
queryandagregateusagestats
()


但是,我自己也遇到了一些与UsageStats有关的问题,请也看看这里:

晚会迟到了。我在这个问题上看到了许多线程,每个人似乎都对如何使用这个API感到困惑。在我自己挣扎了一段时间之后,我发现
UsageStats
是准确的,但是在引擎盖下发生的事情是完全违反直觉的

usagestastsmanager.queryUsageStats()
文档:

注:时间范围的开始和结束时间可以扩展到最近的整个间隔时间

事实证明,通常情况下,您提供给该方法的开始和停止时间都会在您下面进行更改,以与每日间隔相匹配。您认为您是在查询过去15分钟内的使用情况,但实际上您是在查询过去24小时内的使用情况

谢天谢地,API至少为您提供了一种确定启动和停止时间更改为多少的方法。使用此方法的正确方法是始终使用
getFirstTimeStamp()
getLastTimeStamp()
检查范围转换为什么


这非常令人沮丧的结果是,您对间隔没有任何可靠的控制,这使得它在很多用例中都是无用的。像其他人建议的那样,如果你需要精确性,那么你应该使用
queryEvents()
方法,不幸的是,这意味着需要一些手工工作来总结你正在寻找的适当事件。

晚会迟到了。我在这个问题上看到了许多线程,每个人似乎都对如何使用这个API感到困惑。在我自己挣扎了一段时间之后,我发现
UsageStats
是准确的,但是在引擎盖下发生的事情是完全违反直觉的

usagestastsmanager.queryUsageStats()
文档:

注:时间范围的开始和结束时间可以扩展到最近的整个间隔时间

事实证明,通常情况下,您提供给该方法的开始和停止时间都会在您下面进行更改,以与每日间隔相匹配。您认为您是在查询过去15分钟内的使用情况,但实际上您是在查询过去24小时内的使用情况

谢天谢地,API至少为您提供了一种确定启动和停止时间更改为多少的方法。使用此方法的正确方法是始终使用
getFirstTimeStamp()
getLastTimeStamp()
检查范围转换为什么


这非常令人沮丧的结果是,您对间隔没有任何可靠的控制,这使得它在很多用例中都是无用的。像其他人建议的那样,如果您需要精确性,那么您应该使用
queryEvents()
方法,不幸的是,这意味着需要一些手工工作来总结您要查找的适当事件。

这是否回答了您的问题?这回答了你的问题吗?