Handler消息如何取消

handler發消息方式:

發送即時消息:

Message msg = new Message();
        msg.what = 100;
        handler.sendMessage(msg);

延時5秒發送消息:

Message msg = new Message();
        msg.what = 100;
        handler.sendMessageDelayed(msg, 5000);
當執行handler.sengMessageDelayed後,需要取消消息的發送,可以執行handler.removeMessages(100).

removeMessages會將handler對應message queue裏的消息清空,如果帶了int參數則是對應的消息清空。隊列裏面沒有消息則handler會不工作,但不表示handler會停止。當隊列中有新的消息進來以後handler還是會處理。

我的理解:

1、這個方法使用的前提是之前調用過sendEmptyMessageDelayed(0, time),意思是延遲time執行handler中msg.what=0的方法;

2、在延遲時間未到的前提下,執行removeMessages(0),則上面的handler中msg.what=0的方法取消執行;

3、在延遲時間已到,handler中msg.what=0的方法已執行,再執行removeMessages(0),不起作用。


發佈了53 篇原創文章 · 獲贊 17 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章