我已经创建了自定义广播接收器来监听电池的变化(我想监视电池的百分比水平)
但是我没有任何更新。这是我的设置:
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")
}
}
}
答案 0 :(得分:3)
在IntentService
运行的1毫秒内,您将收到更新。 IntentService
返回后,您的onHandleIntent()
就会关闭。 IntentService
是专为短期交易而不是长期经营而设计的。
切换到常规Service
。确保它是前台服务(使用startForeground()
),否则它将仅在Android 8.0+上运行1分钟。