2013-04-18 59 views

回答

14

是可以檢查有postDelayed()被調用,還是沒有?

一個快速修復,在方法中分配一些boolean變量爲真,然後只是執行檢查。

17

有沒有直接的API來實現這一點,但你可以通過使用sendEmptyMessage函數來解決這個問題。希望這會有所幫助。

handler.sendEmptyMessage(some_integer);//Do this when you add the call back. 
if(handler.hasMessages(some_integer)) 
handler.removeMessages(some_integer);//Do this after removing the call back. 
+0

hasMessages()在我的代碼中總是返回false。這已被證實有效嗎? – pmont

+0

是的確是handler.sendEmptyMessage(1);這將在處理程序中設置一個空的消息,所以當你調用if(handler.hasMessages(1))時,這將返回true。如果使用removeMessages(1)刪除消息,則它將返回false – Triode

+4

hasMessages(1)在發出sendEmptyMessage(1)後立即仍然返回false。你在應用中使用過這些代碼嗎? – pmont

9

發佈Runnable時的處理程序獲取帶有「what」字段== 0的消息,因此理論上可以調用hasMessages(0),但是無法檢查是否給出了掛起的Runnable - 例如發佈r0和r1時無法檢查如果r0正在等待或沒有。

相關問題