Я не знаю, ссылался ли Крис на это в комментарии, и я не знаю, насколько это надежно, но вы можете перебрать список, возвращаемый ActivityManager # getRunningAppProcesses () :
public List<ActivityManager.RunningAppProcessInfo> getRunningAppProcesses ()
С: Уровень API 3
Возвращает список процессов приложения, запущенных на устройстве.
Возвращает список RunningAppProcessInfo
записей или ноль, если нет запущенных процессов (пустой список не возвращается). Этот список не указан.
Затем проверьте поле важности каждого ActivityManager.RunningAppProcessInfo
:
public int importance
С: Уровень API 3
Относительный уровень важности, который система придает этому процессу. Может быть одним из IMPORTANCE_FOREGROUND
, IMPORTANCE_VISIBLE
, IMPORTANCE_SERVICE
, IMPORTANCE_BACKGROUND
или IMPORTANCE_EMPTY
. Эти константы пронумерованы, так что «более важные» значения всегда меньше, чем «менее важные» значения.
Вы можете проводить сервисный опрос каждые 30 секунд или около того и регистрировать эти значения.
(Кстати, вы хотите найти эти IMPORTANCE_FOREGROUND
и IMPORTANCE_VISIBLE
)