java停止前一个处理程序postdelayed并启动新处理程序
我正在使用HandlerpostDelayed()
启动计时器7秒。如果在此期间我收到服务器的回复,我将停止计时器。但如果在7秒内未收到回复,则会显示错误
我使用此代码的目的是
handler = new Handler();
Runnable wait4TO = new Runnable(){
@Override
public void run() {
if(pressedButton==INACTVE) ;
// if reply is recieved pressedbutton will be INACTIVE
else
{
sentFailed();
}
}
};
handler.postDelayed(wait4TO, 7000 );
它工作正常,但如果发送了另一条消息,我想取消此超时并启动一个新的超时或将现有超时再延长7秒。我怎样才能做到这一点
我尝试使用handler.removeCallbacks(wait4TO)
和handler.removeCallbacks(null)
取消处理程序,但没有成功。前一个处理程序仍将运行
# 1 楼答案
所以,也许可以尝试添加您签入runnable的标志
当您想停用它时,只需将flag设置为false
最终尝试
# 2 楼答案
removeCallbacks
有效。请注意,每个处理程序都是自己的队列,在您的情况下,为了实现您想要的,您只需要一个处理程序实例