gpt4 book ai didi

java - 为什么Handler没有延迟?

转载 作者:行者123 更新时间:2023-12-01 17:52:24 26 4
gpt4 key购买 nike

我已经为警报创建了一个处理程序,该处理程序应激活 4 秒,停止 4 秒,然后再次激活。当我把它放在 if 语句中时,它不起作用;警报继续播放,停止时间不到一秒,然后再次继续激活,没有延迟。想知道是否有人知道为什么会发生这种情况以及我应该采取什么措施来纠正它。谢谢。

private Handler handler2 = new Handler();
private Runnable startalert = new Runnable() {
@Override
public void run() {
alert2.start();
handler2.postDelayed(this, 4000);
}
};

@Override
public void onLocationChanged(Location location) {




if (location == null) {
speedo.setText("-.- km/h");
}
else {
currentSpeed = location.getSpeed() * 1.85f; //Knots to kmh conversion.
speedo.setText(Math.round(currentSpeed) + " km/h");
}
if (currentSpeed <=4.99) {
background.setBackgroundColor(Color.GREEN);
handler2.removeCallbacks(startalert);


} else if(currentSpeed >=5.00 && currentSpeed <=9.99) {
background.setBackgroundColor(Color.YELLOW);
handler2.removeCallbacks(startalert);


} else if(currentSpeed >=10.00) {
background.setBackgroundColor(Color.RED);
startalert.run();

}
}

最佳答案

使用可运行对象代替“this”。

private Runnable startalert = new Runnable() {
@Override
public void run() {
alert2.start();
handler2.postDelayed(startalert, 4000);
}
};

另一种方法:

final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
//Do something after 100ms
alert2.start();
handler.postDelayed(this, 4000);
}
}, 4000);

关于java - 为什么Handler没有延迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60772819/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com