日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android handler 的removeMessages的使用

發布時間:2024/4/15 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android handler 的removeMessages的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天,簡單講講android里如何使用handler的removeMessages函數。


這個很簡單,之前自己也一致在使用,所以這里記錄一下。


具體的如下:

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),不起作用。


為什么需要這個函數呢?主要因為我們在請求時可能顯示一個加載框,當請求完成時消除加載框,但是如果沒有調用removeMessages,handler的延時代碼仍然會執行,會存在問題。具體怎么解決呢?


發送命令時,設置超時時間

case SET_QUILITY_PREPARE: { exitDialog.show(); handler.sendEmptyMessageDelayed(SET_QUILITY_FINISHED, 10000); } break; case SET_QUILITY_FINISHED: {if (exitDialog.isShowing()) {Toast.makeText(LiveOrBackActivity.this, R.string.request_timeout, Toast.LENGTH_LONG).show(); exitDialog.dismiss(); } }


請求結束的地方移除Messages

exitDialog.dismiss(); handler.removeMessages(SET_QUILITY_FINISHED);


這樣就可以避免handler的延時代碼重復執行所導致的問題。


android handler 的removeMessages的使用就講完了。


就這么簡單。



總結

以上是生活随笔為你收集整理的android handler 的removeMessages的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。