Альтернатива getRunningTasks в Android L

Было хорошо документировано, что getRunningTasks теперь не рекомендуется в Android L. Я использовал это, чтобы получить максимальную активность, и это была важная функция моего приложения. Хотя это не завершено, новое решение в Android L было обещано сотрудником Google. Решение гласит:

«для L мы планируем иметь новое решение, которое рассмотрит некоторые из существующих вариантов использования getRecentTasks (): мы надеемся разоблачить внутреннюю службу статистики использования системы в новой и расширенной форме, доступной сторонним приложениям через SDK.

Новая служба статистики использования должна содержать две основные части информации. Во-первых, он предоставит агрегированную статистику того времени, которое пользователь потратил в каждом приложении, и время последнего запуска этих приложений, свернутое в течение нескольких дней, недель, месяцев и лет. Во-вторых, он будет включать подробные события использования в течение последних нескольких дней, описывая время и имя компонента, когда какое-либо действие переходит на передний план или фон.

Доступ к этим новым данным об использовании потребует, чтобы пользователь явно предоставлял доступ к использованию статистики использования через новый пользовательский интерфейс настроек. Они смогут видеть все приложения, которые имеют доступ и отменяют доступ в любой момент.

Я понимаю, что это не будет охватывать все возможные использования старого API getRecentsTask, и я прошу прощения за это. Однако для того, что мы рассматриваем как ключевое текущее использование API, новый API статистики использования должен быть гораздо более надежным и эффективным ».

Подробнее об этом можно узнать здесь: https://code.google.com/p/android-developer-preview/issues/detail?id=29#c50

Я попытался посмотреть в документации на Android L, но не могу найти ничего, что говорит об использовании службы статистики, упомянутой выше. Кто-нибудь использовал этот API? Может ли кто-нибудь указать мне на документацию?

Здесь также представлена ​​системная статистика api, вызванная вашим вопросом, и подробный API здесь . Насколько я вижу, этот API не позволит вам получить текущую верхнюю активность.

т.е. у вас есть возможность получать UsageEvent с типом MOVE_TO_FOREGROUND с помощью UsageStatsManager.queryEvents но в соответствии с javadoc :

Последние несколько минут журнала событий будут усечены, чтобы предотвратить злоупотребления приложениями.

Так что это действительно API для получения статистики, а не для получения информации в реальном времени. (обратите внимание, что теперь устаревшие getRunningTasks() не были предназначены для получения данных в реальном времени: javadoc )

С другой стороны, если вас интересует только активность вашего собственного приложения : вы можете использовать getAppTasks() возвращая List где вы можете получить RecentTaskInfo с getTaskInfo


EDIT: здесь представлен другой подход.

Он основан на UsageStats и UsageStats.getLastTimeUsed () . Недостаток: он требует дополнительных разрешений и дает вам только имя пакета – не действие – но он дает вам данные в реальном времени.

  • Цвет значков панели состояния Android
  • Возвышение на Android Lollipop не работает
  • Ошибка Android-L
  • полностью прозрачная строка состояния и панель навигации на леденец
  • Метод setMobileDataEnabled больше не может быть вызван как для Android L, так и позже
  • Android SystemII глючит в Lollipop
  • Давайте будем гением компьютера.