Фоновая служба в Oreo

Мне нужно создать службу Android, которая выполняет операции каждые 15 минут. Эта служба должна запускаться при завершении загрузки и должна перезапускаться автоматически (в случае прерывания). В Android Oreo метод startService генерирует исключение, а метод startForegroundService прерывает работу службы через 5 секунд. Я видел, что вы можете использовать JobScheduler, но как я могу заставить его автоматически перезапускаться в случае прерывания? Как я могу запустить Job при загрузке Android?

Спасибо

Вы можете показать свой манифест, пожалуйста

Ümañg ßürmån 02.11.2018 10:47

при звонке в startForegroundService вы должны показать уведомление и вызвать в startForeground для получения услуги в течение 5 секунд.

Vladyslav Matviienko 02.11.2018 10:47

У вас может быть приемник полной загрузки, который уведомит вас о перезагрузке телефона.

Manohar 02.11.2018 10:54
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
4
3
133
1

Ответы 1

Вам действительно нужен сервис, который будет запускаться каждые 15 минут? Это будет очень сильно расходовать заряд батареи и, вероятно, не позволит устройству переключиться в режим Doze. Поэтому, если вы действительно хотите повторять каждые 15 минут, используйте AlarmManager, который не блокируется системой (JobScheduler выполняет свою работу только в перерыве на обслуживание Doze). Для получения дополнительной информации вы можете обратиться к моему ответу здесь и изменить только время повтора: Планирование выполнения задачи каждые 24 часа

Другие вопросы по теме