我想监控Android电池电量,即使它被改变了一个百分点。 应满足以下两个条件:
1-由于效率问题,我不想通过轮询或定期检查电池电量(不使用报警管理器,处理程序或任何其他导致轮询的方式)
2-另一方面,即使我的申请没有,我也需要接收电池电量的变化 在前台或是否被杀死。
目前我正在使用此代码:
IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
context.registerReceiver(new MyBatteryReceiver(), ifilter);
直到上下文(或我的活动)活着,即MyBatteryReceiver收到更改后才能正常工作 电池电量。
其他人建议在registerReceiver中使用null:
context.registerReceiver(null, ifilter);
此解决方案意味着我应该定期检查电池电量。
我查了很多帖子,包括这个帖子:
Android access battery stats or monitoring battery level through manifest
但他们都没有回答这个问题:如何在没有轮询的情况下监控Android电池电量? 当然,当等级太低或太高时,我们可以使用以下广播:
<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" />