android
中的非同步訊息處理主要由四個部分組成,
message
、handler
、messagequeue
和looper。
1.message
message
message
的 what
字段,還可以使用
arg1
和 arg2
欄位來攜帶一些整型資料,使用
obj
字段攜帶乙個
object
物件 。
2. handler
handler
顧名思義也就是處理者的意思,它主要是用於傳送和處理訊息的。傳送訊息一般是使用
handler
的 sendmessage()
方法,而發出的訊息經過一系列地輾轉處理後,最終會傳遞到
handler
的 handlemessage()
方法中。 除了sendmessage()方法外,還可以使用post(new runnable(){};)來處理非同步,在匿名內部類runnable中重寫run()方法,將處理過程轉移到主線程中。
//以下**在子執行緒中執行
public void onfinish(string response)
});}
3. messagequeue
messagequeue 是
訊息佇列,它主要用於存放所有通過
handler
傳送的訊息。這部分訊息會一直存在於訊息佇列中,等待被處理。每個執行緒中只會有乙個
messagequeue
物件。4. looper
looper
是每個執行緒中的
messagequeue
的管家,呼叫
looper
的 loop()
方法後,就會進入到乙個無限迴圈當中,然後每當發現
messagequeue
中存在一條訊息,就會將它取出, 並傳遞到
handler
的 handlemessage()
方法中。 每個執行緒中也只會有乙個
looper
物件。
(注:在《第一行**》的基礎上作了修改)
android非同步訊息處理機制
我們都知道android的ui更新操作都是在主線程執行的,但是很多時候我們都需要在子執行緒 中執行一些費時的操作,以獲取我們所需要的變更資料。很多剛入門的同學都容易犯的乙個錯誤就是在子執行緒試圖去更新ui控制項,這樣做是被android禁止的,所以會出現崩潰的現象。android的非同步資訊處理機制...
Android 解析非同步訊息處理機制
android中的非同步訊息處理主要由四部分組成,message handler messagequeue looper.1.message message是執行緒之間傳遞的訊息,它可以在內部攜帶少量的資訊,用於在不同執行緒之間交換資料。message有what欄位,除此以外,還可以使用arg1和a...
Android 解析非同步訊息處理機制
android中的非同步訊息處理主要有四個部分組成 message handle messagequeue和looper 1.message message是執行緒之間傳遞的訊息,它可以在內部攜帶少量的資訊,用於在不同執行緒之間交換資料 2.handler 主要用於傳送和處理訊息的。傳送訊息一般是使...