我正在尝试从服务获取电池电量。我正在成功获得等级。但是我有一个问题。那就是当我第一次尝试获取电池电量时,我会得到零电量。但是几秒钟后我问时,我会得到准确的水平。我不明白为什么会这样。
这是获取电池电量的代码:
String bLevel;
private String getBatteryLevel(){
BroadcastReceiver cBReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
context.unregisterReceiver(this);
int currentLevel = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
int currentScale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
int batteryLevel;
if (currentLevel >= 0 && currentScale > 0) {
batteryLevel = (currentLevel * 100) / currentScale;
bLevel = Integer.toString(batteryLevel) + " percent";
}
}
};
IntentFilter cIFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
registerReceiver(cBReceiver, cIFilter);
return bLevel;
}
请查看代码。我不知道为什么我第一次问电池电量为零。请帮忙
最佳答案
据我所读。您正在线性运行代码,并返回一个未初始化的值
String bLevel;
// stuffs ... stuffs ... stuffs...
return bLevel;
此String为null,则您正在注册接收者。广播该事件后,您就可以更改变量,并且它具有正确的信息。
这打破了OO范式。