Android – UsageStats getTotalTimeInForeground не обновляет текущее приложение переднего плана

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

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


person Nissim    schedule 30.04.2020    source источник
comment
Отвечает ли это на ваш вопрос? Как подсчитать время использования приложения, когда оно включено передний план?   -  person Tanjim Khan    schedule 15.05.2020