handler訊息機制:首先在主線程中建立乙個handler,然後建立乙個訊息message物件,有兩種方法,new message和message.obtain,由handler發出到訊息佇列messagequeue,messagequeue中enqueuemessage方法,對所有的msg進行排序,按照時間,如果發現剛才傳送的msg排在佇列的頭部,就喚醒主線程,讓主線程去取。然後主線程中預設建立的looper死迴圈,通過queue。next方法不停的去megqueue中取msg,如果沒取到msg就阻塞,等待下乙個子執行緒來喚醒它。如果取到就通過msg.target.dispathmessage方法分發給handler,handler通過handlermessage方法獲取到msg訊息。
具體內容如圖:
注意:執行緒呼叫looper.loop()方法,主線程就會阻塞,是乙個死迴圈,使用管道(pipe),是linux中的一種程序間通訊方式,使用了特殊的檔案,有兩個檔案描述符(乙個是讀取,乙個是寫入)
Android精通之Handler講解
建立乙個handler final handler handler new handler 有可能做大量耗時的操作 子執行緒 new thread new runnable catch interruptedexception e 通知ui更新 handler.sendemptymessage 11...
android學習筆記之Handler
handler handler new handler runable update new runnable publicvoid run system.out.println update handler.postdelayed update,3000 3秒後將update執行緒新增到佇列中 h...
Android之Handler有感 三
主線程給主線程傳送訊息 public class mainsendtomain extends activity class myhandler extends handler public void handlemessage message msg 其他執行緒給自己傳送訊息 public cla...