У меня есть приложение, которое использует BroadcastReceiver
(для краткости BR
) зарегистрировано в манифесте с intent-filter
ACTION_POWER_CONNECTED
и ACTION_POWER_DISCONNECTED
.
Этот BR
запускает Service
, когда телефон подключен, а когда телефон отключен, он останавливает Service
.
Этот Service
регистрирует другой BR
с помощью ACTION_BATTERY_CHANGED
, Я сделал это, потому что хочу зарегистрировать ACTION_BATTERY_CHANGED
BR
, когда телефон заряжается, и я использовал Service
, чтобы сохранить его зарегистрированным, даже если приложение закрыто / уничтожено.
Приложение прекрасно работает для всех уровней API , кроме 27.
Я знаю, что в API 27 есть что-то с BRs
, например, некоторые ограничения, поэтому япопытался выяснить, что именно работает, а что нет.
Я понял, что первый BR
(тот, что в манифесте ) никогда не регистрируется, идругой работает (я также запускаю метод Service
in onCreate
основного действия, поэтому второй BR
регистрируется при открытии приложения) но когда я закрываю приложение, Service
автоматически останавливается / уничтожается, и, таким образом, второй BR
отменяется регистрация.
В API уровень ниже 27 Service
не был автоматически остановлен / уничтожен.
Кто-то сказал мне:
Почему бы вам не попробовать IntentService
...
, а затемон сказал:
Вы знаете, эта идея глупа, не пытайтесь.
Так что я не пробовал.
Всев сети говорят, что используйте JobScheduler
, и после небольшого взгляда на JobScheduler
я почувствовал, что JobScheduler
отличается от BRs
Так что мой вопрос Могу ли я сделать все BroadcastReceiver
можно сделать с JobScheduler
? Я имею в виду, могу ли я сделать все мое приложение без BRs
, но с JobScheduler
.