Перепланируйте Алармы сразу при перезагрузке устройства Android Oreo - PullRequest
0 голосов
/ 11 апреля 2019

Я хочу переназначить сигналы тревоги моего приложения сразу после перезагрузки устройства *. Для этого процесса я делаю запрос в свою локальную БД, чтобы получить подробные данные о тревоге, а затем устанавливаю их на AlarmManager. Эти действия должны выполняться в фоновом потоке. Поэтому я попробовал следующее:

1) Я поместил вышеуказанный код в JobIntentService и вызвал enqueueWork(), но очевидно, что работа не была выполнена немедленно.

2) Я поместил вышеуказанный код в ServiceAsyncTask) и назвал startForegroundService. Кажется, это работает, но это неправильный случай использования Foreground Service на основе документации Android.

3) Создайте запланированное задание и установите setMinimumLatency(0), чтобы код выполнялся немедленно.

Какой, по вашему мнению, является наиболее правильным способом немедленного планирования аварийных сигналов? У вас есть другие предложения?

* В onReceive() действия BroadcastReceiver для ACTION_BOOT_COMPLETED.

1 Ответ

0 голосов
/ 12 апреля 2019

В рамках Android 8.0 (уровень API 26) Пределы выполнения фона, приложения, ориентированные на уровень API 26 или выше, больше не могут регистрироваться широковещательные приемники для неявных трансляций в их манифесте.

Но, к счастью, ACTION_BOOT_COMPLETED исключено из вышеуказанного правила. Источник

Поэтому вы можете определить BroadcastReceiver с помощью действия ACTION_BOOT_COMPLETED, а затем в методе onReceive делегировать работу по планированию аварийных сигналов фоновому потоку, используя JobIntentService или ForegroundService

...