Java Handler#removeCallbacksAndMessages无法正常工作
我创建了一个h.postdelayed,如果条件为真,我想取消它。 我编写了if条件,并在其中执行了h.removecallbacksandsessages(null)。但是,我可以看到“计时器”仍在运行。有什么帮助吗Java Handler#removeCallbacksAndMessages无法正常工作,java,android,runnable,android-handler,postdelayed,Java,Android,Runnable,Android Handler,Postdelayed,我创建了一个h.postdelayed,如果条件为真,我想取消它。 我编写了if条件,并在其中执行了h.removecallbacksandsessages(null)。但是,我可以看到“计时器”仍在运行。有什么帮助吗 h.postDelayed(new Runnable() { public void run() { timePassed++; timeLeft = (maxTime - timePassed) / 10; timeLeftStr = "Time l
h.postDelayed(new Runnable() {
public void run() {
timePassed++;
timeLeft = (maxTime - timePassed) / 10;
timeLeftStr = "Time left: " + timeLeft + " seconds";
timer.setText(timeLeftStr);
if (timeLeft <= 0) {
started = false;
h.removeCallbacksAndMessages(null);
setupGameOver(restartBtn, header1, header2, timer);
}
h.postDelayed(this, 100);
}
}, 100);
h.postDelayed(新的Runnable(){
公开募捐{
timePassed++;
timeLeft=(maxTime-timePassed)/10;
timeLeftStr=“剩余时间:”+timeLeft+“秒”;
timer.setText(timeLeftStr);
如果(timeLeft如果不想再次运行,请不要延迟
h.postDelayed(new Runnable() {
public void run() {
timePassed++;
timeLeft = (maxTime - timePassed) / 10;
timeLeftStr = "Time left: " + timeLeft + " seconds";
timer.setText(timeLeftStr);
if (timeLeft <= 0) {
started = false;
h.removeCallbacksAndMessages(null);
setupGameOver(restartBtn, header1, header2, timer);
} else {
// run again.
h.postDelayed(this, 100);
}
}
}, 100);
h.postDelayed(新的Runnable(){
公开募捐{
timePassed++;
timeLeft=(maxTime-timePassed)/10;
timeLeftStr=“剩余时间:”+timeLeft+“秒”;
timer.setText(timeLeftStr);
如果(timeLeft)相同的方式:如果不想再次运行,请不要删除CallbacksandMessages-您没有任何“挂起”Runnable
所以没有什么可以删除的是。我假设@Freeline还有其他的runnables循环也需要停止,所以我保留了removecallbacksandsessages
方法,以便继续运行。感谢您的快速回答。所以postdelayed是它再次运行的原因。我不知道,只是在谷歌上搜索了如何恢复o每隔x秒运行一次,这就是出现的。我没有任何其他可运行的程序,因此我可以删除“removeCallbacksAndMessages”?下次我有机会时将尝试此操作,并将其标记为正确,如果它有效。尽管如此。再次感谢。@FreeLine很好,很高兴我的回答帮助了你。你能接受它为“the”回答你的问题吗?@petey如果有效,我会将其标记为正确,但我还没有机会尝试。