我有一个奇怪的问题。我想每秒更新一次通知文本,所以我写了这段代码
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
batteryTemperature = getBatteryTemperature();
new Handler().postDelayed(this, 1000);
}
}, 1000);
if(batteryTemperature != 0) {
builder.setContentText("BatteryLevel"+batteryTemperature);
} else {
builder.setContentText("The batteryTemperature value is 0");
}
我看到一个Log,在Handler中,batteryTemperature值不同于0,但是在Handler中,它返回0。为什么?如何在通知中设置正确的值?
最佳答案
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
batteryTemperature = getBatteryTemperature();
handler.postDelayed(this, 1000);
}
}, 1000);
不要在每次调用Runnable时都创建一个Handler。每次执行runnable时,您都需要执行此代码段
if(batteryTemperature != 0) {
builder.setContentText("BatteryLevel"+batteryTemperature);
} else {
builder.setContentText("The batteryTemperature value is 0");
}