我想监控 Android 电池电量,即使它改变了一个百分比。应满足以下两个条件:
1-因为效率我不想通过轮询或定期检查电池电量(不使用警报管理器、处理程序或任何其他导致轮询的东西)
2-另一方面,即使我的应用程序不在前台或被杀死,我也需要接收电池电量的变化。
目前我正在使用这段代码:
IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
context.registerReceiver(new MyBatteryReceiver(), ifilter);
在上下文(或我的活动)处于活动状态之前它工作得很好,即 MyBatteryReceiver 接收到电池电量的变化。
其他人建议将 null 与 registerReceiver 一起使用:
context.registerReceiver(null, ifilter);
这个解决方案意味着我应该定期检查电池电量。
我检查了很多帖子,包括这个:
但他们都没有回答这个问题:How to monitor android battery level without polling? 当然,当级别太低或太高时,我们可以使用以下广播:
<action android:name="android.intent.action.ACTION_BATTERY_LOW"/>
<action android:name="android.intent.action.ACTION_BATTERY_OKAY"/>
不幸的是,不可能使用类似的广播来改变电池电量:
<action android:name="android.intent.action.BATTERY_CHANGED" />