我正在使用處理程序postDelayed()
啓動計時器7秒。如果在這段時間內我收到服務器的回覆,我會停止計時器。但如果答覆沒有在7秒內收到,它會顯示錯誤。stop先前處理程序postdelayed並開始新的
我使用此代碼爲目的
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)
取消處理程序,但沒有成功。以前的處理器將仍然運行
這很奇怪。你確定你只有一個處理程序對象的實例嗎? – Blackbelt
@blackbelt當我發送消息時,上面的代碼被調用 – dmSherazi
那麼您是否爲您發送的每條消息都創建了一個新的處理程序?這將是更好的,你可以張貼更多的代碼/上下文 – Blackbelt