Что использует Android, чтобы запретить запуск сервиса в фоновом режиме? - PullRequest
0 голосов
/ 16 декабря 2018

Я пытаюсь запустить службу только в то время как на переднем плане, но для определения переднего плана я использую Activity.onStart, однако иногда это вызывается, когда приложение находится в фоновом режиме в соответствии с тем фрагментом кода, который выбрасывает java.lang.IllegalStateException : Запрещено запускать сервис. Намерение при запуске сервиса.

- конкретно, при запуске деятельности с выключенным экраном.

Кто-нибудь знает, что такое проверка?является?Как я могу «если» это, то есть мне нужно && onStart с некоторым processIsInForeground (), чтобы получить истинное onStart

Пока у меня есть

val appProcesses = activityManager.runningAppProcesses
if (appProcesses == null) return false

val thisProcess = appProcesses.firstOrNull { it.processName == packageName }
if (thisProcess == null) return false

val isProcessForeground == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND

Но это работает только как 90%время, иногда значение имеет значение IMPORTANCE_SERVICE, иногда IMPORTANCE_TOP_SLEEPING

Кроме того, в документах говорится, что API в основном только для отладки и т. д.

...