我在阅读指南here关于设置BroadcastReceiver
来检查电池的变化。它说,我可以设置一个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
,它会是当前值,还是最后一次更改的值?我想检查它是否发生了变化,并且始终如此以便我可以优化我的应用并节省电池寿命。
那么,如果我要创建像'方法public boolean isCharging()'并返回'isCharging'。可以随时调用isCharging(),那么如果设备正在充电,它会准确返回吗? – 2012-07-22 15:24:53
我相信(几乎肯定:))它会。为什么不测试它是确定的? – nullpotent 2012-07-22 15:25:40
只有在您调用'isCharging()'之前调用'onReceive','isCharging'才会正确指示充电状态。您需要将'isCharging'评估代码放在'isCharging()'方法中。 – nullpotent 2012-07-22 15:44:54