【发布时间】:2016-03-26 17:30:37
【问题描述】:
我正在尝试从UsageStatsManager 查询UsageStats,目的是返回所有每天使用的应用包以及使用了多长时间。
守则:
public static List<UsageStats> getUsageStatsList(Context context){
UsageStatsManager usm = getUsageStatsManager(context);
Calendar calendar = Calendar.getInstance();
long endTime = calendar.getTimeInMillis();
calendar.add(Calendar.DAY_OF_YEAR, -1);
long startTime = calendar.getTimeInMillis();
List<UsageStats> usageStatsList = usm.queryUsageStats(UsageStatsManager.INTERVAL_DAILY,startTime, endTime);
return usageStatsList;
}
我有一个警报,每天午夜前触发并查询的使用情况统计,然后存储返回的数据。起初一切似乎都很好,我得到了包结果和它们的活动时间,但是我添加了一个每小时检查一次结果的功能,在这里我发现了一个奇怪的发现。
UsageStatsManager 的结果似乎在不同时间重置,而不是在午夜重置,考虑到我使用 INTERVAL_DAILY 作为搜索参数,这是我所期望的。
根据我保存的数据包“时间”结果似乎正在重置(大致时间):
- 凌晨 3 点
- 中午
- 下午 3 点
- 午夜
我意识到套餐时间重置时间之间存在相关性,但这是否意味着会发生?
我已经看过以下帖子,我从中获得了很多信息: How to use UsageStatsManager?
因此:
Android UsageStatsManager producing wrong output?
在 cmets 中提到,从 queryUsageStats 返回的数据不可信,正在返回随机结果。
是我遗漏了一些简单的东西还是UsageStatsManager 无法正常运行?
【问题讨论】:
-
嗨!您找到解决方案了吗?我也有同样的问题。
标签: java android usage-statistics activity-manager usagestatsmanager