1. 程式人生 > >Android重新學習記錄和心得(一)--Handler

Android重新學習記錄和心得(一)--Handler

1.關於Handler,MessageQueue,Looper,Message

主要講了Handler的message傳送,訊息的同步非同步。以前只知道Handler可以傳送訊息,然後一般通過handlerMessage方法來接收各種訊息,發現其實Handler還可設定callback,callback會先執行,主要用來做訊息的分類,或者多個地方呼叫Handler。Message也可以帶Callback,只不過該方法是隱藏的。

預設的handler執行時是按照MessageQueue的順序同步執行,一個Looper只允許有一個MessageQueue,但是可以有多個Handler,其實也可以讓訊息非同步立刻執行,需要設定MessageQueue的postSyncBarrier,設定之後會預設生成一個target為null的訊息,這時所有同步的訊息將都得不到執行,只會執行非同步訊息,只有訊息執行完之後,使用removeSymcBarrier,才會繼續執行後續的同步訊息。要執行非同步訊息,還需將Message設定為Async才行。

async機制可以用來做一些訊息執行的時候,保證某個訊息執行之後,其他訊息才會執行的動作