BroadcastReceiver не обновляется с ACTION_BATTERY_CHANGED - PullRequest
0 голосов
/ 13 сентября 2018

Я создал специальный приемник вещания для прослушивания изменений батареи (я хотел бы контролировать процент заряда батареи)

Однако я не получаю никаких обновлений. Вот моя установка:

class MyService : IntentService("MyService") {

val receiver: PowerConnectionReceiver = PowerConnectionReceiver()

override fun onHandleIntent(intent: Intent?) {
  Timber.d("Service started now")
}

override fun onCreate() {
 val batteryStatus: Intent? = 
 IntentFilter(Intent.ACTION_BATTERY_CHANGED).let { ifilter ->
  registerReceiver(receiver, ifilter)
 }

}

class PowerConnectionReceiver : BroadcastReceiver() {

override fun onReceive(context: Context, intent: Intent) {
     val status: Int = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1)
    Timber.d("Battery changed")
    }
  }
}

1 Ответ

0 голосов
/ 13 сентября 2018

Вы будете получать обновления в течение <1 миллисекунды, в течение которого работает <code>IntentService. Ваш IntentService отключается, как только onHandleIntent() возвращается. IntentService предназначен для краткосрочных транзакционных видов работ, а не для долгосрочных операций.

Переключиться на обычный Service. Убедитесь, что это приоритетный сервис (используется startForeground()), иначе он будет работать только в течение 1 минуты на Android 8.0 +.

...