訊息機制

c_clear發表於2016-01-04

如上一篇文章提到的,UI必須都在主執行緒中重新整理,包括吐司提示框(toast)

傳送訊息,需要知道訊息是可以攜帶資料的,即msg.obj,傳送訊息有兩種情況:
1 傳送攜帶資訊的訊息,這種情況必須建立訊息物件
2 傳送空訊息,當傳送的訊息不需要攜帶資訊時,就傳送空訊息
訊息的建立,一般是不需要new的,而是用到 Message msg = handler.obtainmessage(); 用這種方法,如果訊息池有訊息,即取出,沒有,則new一個新的
傳送訊息,如何區別訊息是成功還是失敗呢?這裡用到了msg.what,這個屬性是用來定義訊息的型別的
例如 msg.what = 1   msg.what = 2   然後用switch來區分操作。

下面來總結一下訊息佇列
當主執行緒建立後,就會同時生成messageQueue(訊息佇列)和Looper(訊息輪詢器)物件
如果需要使用訊息機制,需要手動建立handler(訊息處理器)
輪詢器會不斷詢問訊息佇列中是否有訊息,有訊息就會立馬傳送給handler物件
handler物件拿到訊息,就會立馬執行handlermessage方法。

相關文章