handle message looper messagequeue

message :消息,包含消息id,以及一些處理的數據。由messagequeue統一處理。

handler:處理者,負責message的發放以及處理。

messagequeue:消息隊列,用於存放handler發送過來的消息,按照fifo,並等待looper的抽取。

looper:消息泵,不斷地從messagequeue中抽取message執行

thread:線程,負責調度整個消息循環,既消息循環的場所。

1、在ui線程中,系統會自動創建一個messagequeue,並會執行looper循環。但是在其餘新開的線程當中需要手動去開啓消息循環機制

 class LooperThread extends Thread {

                               public Handler mHandler;

                               public void run() {

                                               Looper.prepare();

                                               mHandler = new Handler() {

                                                               public void handleMessage(Message msg) {

                                                                              // process incoming messages here

                                                               }

                                               };

                                               Looper.loop();

                               }

                }


2、在一個線程中,一個looper對應一個messagequeue。但是一個looper對應許許多多的handler。但是這些handler和looper必須處於同一個線程當中。且是通過message.what來區分這個message是屬於哪個handler發出來的。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章