Фрагмент кода:

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

Я заметил, что старый метод запуска службы переднего плана, кажется, работает на O. Т.е.

startForeground(NOTIFICATION_ID, getNotification());

Согласно руководству по изменению поведения здесь:https://developer.android.com/preview/behavior-changes.html

Метод NotificationManager.startServiceInForeground () запускает службу переднего плана. Старый способ запуска службы переднего плана больше не работает.

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

редактировать Включая пример:

Пример проекта Google LocationUpdatesForegroundService на самом деле имеет рабочий пример, где вы можете увидеть проблему из первых рук.https://github.com/googlesamples/android-play-location/tree/master/LocationUpdatesForegroundService

Кажется, что метод startForeground работает без проблем, будь то нацеливание и компиляция по API уровня 25 ИЛИ нацеленность и компиляция против O (как указано здесь:https://developer.android.com/preview/migration.html#uya)

Итак, для воспроизведения:

Сконфигурируйте gradle приложения, как упомянуто в предыдущей ссылкеОткрыть приложениеЗапросить обновление местоположенияЗакрыть приложение (с помощью кнопки «назад» или «домой»)

Сервис работает на переднем плане (отображается значком в тени уведомлений). Обновления местоположения проходят, как и ожидалось (каждые 10 секунд), даже на устройстве под управлением O. Что мне здесь не хватает?

Ответы на вопрос(3)

Ваш ответ на вопрос