Как запустить службу переднего плана в Oreo и выше после завершения загрузки?

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

Для прослушивания загрузки я использую Broadcast-Receiver.

В AndroidManifest.xml я написал это.

<receiver
     android:name=".services.receiver.StartUpdateReceiver"
     android:enabled="true"
     android:exported="true"
     android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
     <intent-filter android:priority="1000">
         <action android:name="android.intent.action.BOOT_COMPLETED" />
     </intent-filter>
</receiver>

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

Пожалуйста, дайте мне знать, как я могу этого добиться?


person Harish Kamboj    schedule 20.08.2018    source источник
comment
См. эту документацию developer.android.com/about/versions/oreo/background#services.   -  person Rahul Chokshi    schedule 20.08.2018
comment
Согласно этому документу: Ограничения фоновых служб: пока приложение находится в режиме ожидания, существуют ограничения на использование им фоновых служб. Это не относится к службам переднего плана, которые более заметны для пользователя. Вот почему я хочу использовать Foreground Service   -  person Harish Kamboj    schedule 20.08.2018


Ответы (2)


Используйте startForegroundService() для запуска службы переднего плана.

person CommonsWare    schedule 20.08.2018
comment
Привет, спасибо за ответ, это сработало, но не так, как ожидалось. Я не могу получать обновления местоположения, так как вы знаете, что в Android O также есть ограничение на обновление местоположения, так как я могу справиться с этим? - person Harish Kamboj; 20.08.2018
comment
@HarishKamboj: служба переднего плана не должна быть затронута: developer.android.com /о/версии/орео/ - person CommonsWare; 21.08.2018

В Android 8.0 представлен новый метод startForegroundService() для запуска новой службы на переднем плане. После того, как система создала службу, у приложения есть пять секунд, чтобы вызвать метод службы startForeground(), чтобы отобразить видимое пользователю уведомление новой службы. Если приложение не вызывает startForeground() в течение установленного времени, система останавливает службу и объявляет приложение ANR. Как указано на сайте разработчиков проверьте это

person Veeresh P    schedule 20.08.2018