问题
我想检索UsageStats
每周或每月的列表。但是,当我请求月度数据时,输出通常具有重叠的时间间隔,例如 4 月 29 日星期三到 5 月 4 日星期一(请参阅下面时间戳的最新结果)。
所以我的问题是:如何使用 UsageStatsManager 干净地获取特定周(例如周一 - 周日)或月份(例如 4 月 1 日 - 4 月 31 日)的使用情况统计信息?
背景
在我的 Android 应用程序中,我使用UsageStatsManager
来检索每周/每月在前台的总时间。这篇关于如何使用的帖子UsageStatsManager
已经非常有帮助,以及关于产生错误的每日结果的这篇文章UsageStatsManager
(我正在使用该方法进行日常使用统计,现在工作正常)。
问题
当我尝试检索每周/每月间隔的使用情况统计信息时,问题就开始了。UsageStatsManager文档指出
使用数据汇总为时间间隔:天、周、月和年。
但是我从查询 UsageStatsManager 得到的输出是非常不同的。我如何检索过去两个月的 UsageStats 对象列表的示例:
Calendar endCalendar = Calendar.getInstance();
long endTime = endCalendar.getTimeInMillis();
Calendar startCalendar = Calendar.getInstance();
startCalendar.add(Calendar.MONTH, -2); // since two months.
long startTime = startCalendar.getTimeInMillis();
UsageStatsManager usm = (UsageStatsManager) context.getSystemService(Context.USAGE_STATS_SERVICE);
List<UsageStats> result = usm.queryUsageStats(UsageStatsManager.INTERVAL_MONTHLY, startTime, endTime);
但是,当我查看List<UsageStats> result
并记录包的时间戳及其前台时间时,我得到了一堆时间戳,但它们根本不是每月间隔的。我从以下位置为联系人应用程序检索到的时间戳示例result
:
ForegroundTime: 4447 first=Wed Mar 04 03:53:28 GMT+01:00 2020 last=Fri Mar 06 11:46:18 GMT+01:00 2020
ForegroundTime: 176383 first=Fri Mar 06 11:46:18 GMT+01:00 2020 last=Tue Mar 17 07:53:54 GMT+01:00 2020
ForegroundTime: 14337 first=Tue Mar 17 07:53:54 GMT+01:00 2020 last=Tue Mar 17 20:03:31 GMT+01:00 2020
ForegroundTime: 0 first=Tue Mar 17 20:03:31 GMT+01:00 2020 last=Fri Mar 20 14:32:26 GMT+01:00 2020
ForegroundTime: 0 first=Fri Mar 20 14:32:26 GMT+01:00 2020 last=Mon Mar 23 00:12:11 GMT+01:00 2020
ForegroundTime: 0 first=Mon Mar 23 04:27:16 GMT+01:00 2020 last=Mon Mar 23 17:00:29 GMT+01:00 2020
ForegroundTime: 0 first=Mon Mar 23 17:00:29 GMT+01:00 2020 last=Sat Mar 28 00:52:10 GMT+01:00 2020
ForegroundTime: 0 first=Sat Mar 28 00:52:10 GMT+01:00 2020 last=Fri Apr 03 06:45:08 GMT+02:00 2020
ForegroundTime: 81481 first=Fri Apr 03 06:45:08 GMT+02:00 2020 last=Thu Apr 09 18:04:05 GMT+02:00 2020
ForegroundTime: 0 first=Thu Apr 09 18:04:05 GMT+02:00 2020 last=Thu Apr 16 10:31:23 GMT+02:00 2020
ForegroundTime: 157189 first=Thu Apr 16 10:31:23 GMT+02:00 2020 last=Sun Apr 26 02:10:31 GMT+02:00 2020
ForegroundTime: 0 first=Sun Apr 26 02:10:31 GMT+02:00 2020 last=Wed Apr 29 13:21:12 GMT+02:00 2020
ForegroundTime: 43516 first=Wed Apr 29 13:21:12 GMT+02:00 2020 last=Mon May 04 17:45:43 GMT+02:00 2020
这似乎几乎随机地划分为区间。
任何有关 UsageStatsManager 为何具有此行为的链接/解释,或使用 UsageStatsManager 查询周/月/年的开源应用程序示例都会非常有帮助。提前致谢。