Android 9: Служба переднего плана с уведомлением останавливается после того, как телефон переходит в режим ожидания

Мы используем обновления местоположения с постоянными интервалами, чтобы предоставлять наши услуги с помощью службы Foreground. В Android 9 служба полностью останавливается, пока пользователь не разблокирует экран. Он отлично работает на устройствах Android O и pre O. Я обратился к Интернету и попытался использовать все доступные обходные пути. Но ничего не работает. Кто-нибудь сталкивается с этой проблемой? Есть ли какое-нибудь решение?

Согласно документам, службы Foreground с уведомлениями освобождаются от блокировки. Я пытался использовать блокировку пробуждения и менеджер будильника. Пока ничего не получилось. Что мне не хватает? На это нет ни четкой документации, ни Stack Overflow.


person rana    schedule 14.06.2019    source источник
comment
так устроен Android 9. Вероятно, вам нужно получить wakelock, чтобы служба работала.   -  person Vladyslav Matviienko    schedule 14.06.2019
comment
Я тоже использовал wake lock :(   -  person rana    schedule 15.06.2019


Ответы (1)


В 26 и выше вы должны указать тип службы переднего плана как местоположение в AndroidManifest.

           <service
            android:name="LocationUpdatesService"
            android:enabled="true"
            android:exported="true"
            android:foregroundServiceType="location" />

И вам нужно вызвать ContextCompat.startForegroundService(getApplicationContext(), intent); вместо того, чтобы просто вызывать startService(), как в версиях ОС Pre-O.

person rana    schedule 08.11.2019