Handler類的概述
Android系統是通過Looper、Handler來實現消息的循環機制。消息循環是針對於多線程的,每個線程都可以有自己的消息隊列和消息循環。其中:
Looper類負責管理消息隊列和消息循環
Handler類負責把消息加入特定的Looper的消息隊列中,並處理該消息隊列中的消息
Handler類的應用場所:需要進行延時處理的場合
①某些不需要實時顯示的,可以先放到消息隊列中(例如彈出提示信息,更新UI等)
②在一個子線程中去創建一個Handler,然後使用這個handler實例在任何其他線程中發送消息,最終處理消息的代碼都會在你創建Handler實例的線程中運行(例如線程間的通信 :Handler+Message)
Handler類常用的方法
handleMessage(Message msg) | 子類對象通過該方法接受信息 |
sendEmptyMessage(int what) | 發送只有一個what值得消息 |
sendMessag(Message what) | 發送消息的Handler,通過handleMessage()方法接受 |
post(Runnable r) | 將一個線程添加到消息隊列中 |
開發帶有Handle類的程序步驟如下:
①在Activity或Activity的Widget中創建Handler對象,並重寫handlemessage()方法;
②在onCreate()主線程創建一個新線程,並調用sendMessage()或sendEmptyMessage()方法向Handle發送消息;
③在Handler類的對象中用handleMessage()方法接受信息,根據不同的消息執行不同的操作;
利用handle類開發的實用案例
(利用Handler實現更新進度條、定時處理、獲取網頁內容、主線程與分線程之間的消息傳遞)
案例鏈接:https://github.com/xschao/Handle.git
環境:AndroidStudio3.3.2直接導入如下