我正试图从服务中获取电池电量。我成功了。但我有一个问题。这是当我第一次尝试获得电池电量时,我 null 。 但是当我在几秒钟之后询问时,我会得到确切的等级。我不明白为什么会发生这种情况。
以下是获取电池电量的代码: -
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;
}
请参阅代码。我不知道为什么当我第一次要求时,为什么我将 null 作为我的电池电量。请帮忙
答案 0 :(得分:0)
据我所知。您正在线性运行代码,并返回未初始化的值
String bLevel;
// stuffs ... stuffs ... stuffs...
return bLevel;
此String为null,然后,您正在注册接收器。广播该事件后,您就可以更改变量,并且它具有正确的信息。
这打破了OO范式。