首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UsageStatsManager没有返回正确的每周或每月结果

UsageStatsManager没有返回正确的每周或每月结果
EN

Stack Overflow用户
提问于 2020-05-04 16:21:42
回答 1查看 274关注 0票数 2

问题

我想每周或每月检索一份UsageStats的列表。但是,输出通常有重叠的间隔,例如Wed Apr 29,直到2004年5月中旬,当我要求每月数据时(见下面时间戳的最新结果)。

,所以我的问题是:如何使用UsageStatsManager来干净地获取特定一周(例如蒙-太阳)或月份(例如4月1日-4月31日)的使用统计数据?

背景

在我的Android应用程序中,我使用UsageStatsManager来检索每周/每月前台的总时间。关于如何使用这个职位UsageStatsManager已经很有帮助了,关于UsageStatsManager这个职位也产生了错误的每日结果(我正在使用这种方法来处理日常使用的统计数据,它现在运行得很好)。

问题

当我试图检索每周/每月间隔的使用量统计数据时,麻烦就开始了。UsageStatsManager文档指出:

使用数据聚合成时间间隔:天、周、月和年。

,但是我从查询UsageStatsManager获得的输出与非常不同。关于如何检索过去两个月中的UsageStats对象列表的示例:

代码语言:javascript
复制
    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中为联系人应用程序检索的时间戳示例

代码语言:javascript
复制
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查询周/月/年的开源应用程序的例子都是非常有帮助的。提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2020-05-16 00:02:11

我可能无法解决这个问题,但我会建议一种解决方法,就是对所有这些数据使用queryEvents函数--每天、每周和每月的数据。

使用此函数查询每周数据(最后7天的数据)类似于通过它查询日常数据。(您提到您已经实现了每日数据的功能)

至于月度数据,您不能直接使用该函数,因为正如文档中所说的,事件由系统保存一周左右。您需要将使用数据存储在本地数据库中并从中查询。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61596881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档