我正在运行一个前台服务,它会及时对用户的应用程序使用情况进行采样。
我注意到该UsageStats getTotalTimeInForeground(..)
函数有一个奇怪的行为 - 似乎当前前台应用程序的统计信息没有更新,直到它进入后台。
代码:
UsageStatsManager usageStatsManager = (UsageStatsManager)context.getSystemService(Context.USAGE_STATS_SERVICE);
Map<String, UsageStats> queryUsageStats = usageStatsManager.queryAndAggregateUsageStats(UsageStatsManager.INTERVAL_DAILY, 0, System.currentTimeMillis());
long totalTimeUsageInMillis = queryUsageStats.get("com.sample.app").
getTotalTimeInForeground();
每次迭代后 -在前台totalTimeUsageInMillis
时不受影响。com.sample.app
一旦我离开com.sample.app
- 我的服务获得更新的价值
我可以通过为当前运行的 (=foreground) 应用程序保留一个计数器并将其添加到结果中来解决此问题,直到用户切换应用程序,但我不希望增加应用程序的开销。