我创建了自定义广播接收器来监听电池变化(我想监控电池的百分比水平)
但是我没有收到任何更新。这是我的设置:
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/