代码之家  ›  专栏  ›  技术社区  ›  K.Os

BroadcastReceiver未从操作\u电池\u更改中获得更新

  •  1
  • K.Os  · 技术社区  · 7 年前

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

    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 回复  |  直到 7 年前
        1
  •  3
  •   CommonsWare    7 年前

    您将在 IntentService 正在运行。你的 onHandleIntent() 返回。 设计用于短期事务性工作,而不是长期操作。

    换成普通的 Service . 确保它是前台服务(使用 startForeground() ),否则在Android 8.0+上只能运行1分钟。