我在这里阅读了有关设置BroadcastReceiver
检查电池变化的指南。它说我可以设置一个BroadcastReceiver
这样的:
<receiver android:name=".PowerConnectionReceiver">
<intent-filter>
<action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
<action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/>
</intent-filter>
</receiver>
在我的清单中,这是一个类:
public class PowerConnectionReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
status == BatteryManager.BATTERY_STATUS_FULL;
int chargePlug = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
boolean usbCharge = chargePlug == BATTERY_PLUGGED_USB;
boolean acCharge = chargePlug == BATTERY_PLUGGED_AC;
}
}
是否仅在电池状态发生变化时才BroadcastReceiver
通话?onReceive(...)
例如,如果用户将设备插入他们的计算机并且它在整个BroadcastReceiver
运行期间都在充电怎么办。它会检测到变化吗,因为从技术上讲,设备的电池状态没有改变?每当我得到isCharging
时,它会是当前值,还是上次更改时的值?我想检查它是否确实发生了变化以及它始终是什么,以便我可以优化我的应用程序并节省电池寿命。