android - BroadcastReceiver 未从 ACTION_BATTERY_CHANGED 更新

标签 android kotlin android-broadcastreceiver android-intentservice

我创建了自定义广播接收器来监听电池变化(我想监控电池的百分比水平)

但是我没有收到任何更新。这是我的设置:

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")
    }
  }
}

最佳答案

您将在 IntentService 运行的 < 1 毫秒时间内收到更新。一旦 onHandleIntent() 返回,您的 IntentService 就会关闭。 IntentService 专为短期事务性工作而不是长期操作而设计。

切换到常规服务。确保它是前台服务(使用 startForeground()),否则它只会在 Android 8.0+ 上运行 1 分钟。

关于android - BroadcastReceiver 未从 ACTION_BATTERY_CHANGED 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52313498/

相关文章:

Kotlin 多平台 : How to start coroutine blockingly without runBlocking

android - Kotlin 和 android lint 检查

android - 致命异常 : java. lang.OutOfMemoryError:长度为 1083403672 的 int[] 超出 VM 限制

android - AlarmManager 不适用于 Lollipop 中的三星设备

android - 如何编写代码使用 Android 查询来搜索通话记录的数据库?

kotlin - 在 kotlin 公开模型中,排序如何与限制一起工作?

android - PushWoosh Custom Push Broadcast receiver intent to activity 提供额外的 null

android - 如何获取带有日期和时间的拨出电话号码?

android - java.lang.UnsupportedOperationException : Can't convert value at index 5 to color: type=0x5

android - 如何使用Android Studio在Android L或4.4上运行应用程序?