Служба Foreground в API Level 24 - Android 7.0 Nougat - PullRequest
0 голосов
/ 29 апреля 2018

Мой вопрос относится к API LEVEL 24 - Android 7.0 Nougat. Я пытаюсь найти наиболее подходящий и надежный способ запустить липкий сервис переднего плана. Подводить итоги: - Сервис должен быть запущен из действия после нажатия кнопки - Будет создано (липкое - это будет обрабатываться флагами уведомления)

На уровне API 26 мы можем вызвать startForegroundService(service, notification), и служба автоматически сопоставляется с уведомлением. Однако на уровне API 24 служба запускается с startService(service), и уведомление отображается путем вызова метода NotificationManagerCompat notify. Как мы можем сообщить ОС, что уведомление относится к сервису, поэтому сервис считается приоритетным, и ОС никогда не убьет сама.

Примечание: причина, по которой я хочу, чтобы эта реализация была ориентирована на будущее. Эта служба нуждается в обновлении местоположения и, начиная с API уровня 26, только приоритетные службы (с прикрепленным уведомлением) могут получать обновления в режиме реального времени (https://developer.android.com/about/versions/oreo/background-location-limits).

1 Ответ

0 голосов
/ 29 апреля 2018

Как мы можем сообщить ОС, что уведомление относится к сервису, поэтому сервис считается приоритетным

Позвоните startForeground() в сервис, поставив Notification. Это необходимо сделать и на Android 8.0+.

что ОС никогда не убьет сама по себе

Такого никогда не было. Это просто снижает вероятность того, что Android завершит ваш процесс.

...