Android - UsageStats getTotalTimeInForeground не обновляет текущее приложение переднего плана - PullRequest
0 голосов
/ 30 апреля 2020

Я запускаю службу переднего плана, которая своевременно проверяет использование приложения пользователем.

Я заметил странное поведение функции 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 - мой сервис получает обновленное значение

. Я могу обойти эту проблему, сохранив счетчик для запущенного в данный момент (= переднего плана) приложения и добавив его в результат, пока пользователь не переключит приложение, но я предпочитаю не добавлять накладные расходы на приложение.

Следующий снимок экрана был сделан с помощью тестера, который я построил, и показывает 2 вызова, выполненных с интервалом в 1 минуту: enter image description here

...