android中的非同步訊息處理主要由四部分組成,message、handler、messagequeue、looper.
1.message
message是執行緒之間傳遞的訊息,它可以在內部攜帶少量的資訊,用於在不同執行緒之間交換資料。message有what欄位,除此以外,還可以使用arg1和arg2欄位來攜帶一些整型資料,使用obj欄位攜帶乙個object物件。
2.handler
handler顧名思義就是處理者的意思,它主要用法傳送訊息和處理訊息。傳送訊息一般使用的是handler的sendmessage()方法,而發出的資訊經過一系列的輾轉處理之後,最終會傳到handler的handlemessage()方法中
3.messagequeue
messagequeue是訊息佇列的意思,主要存放通過handler傳送的訊息,這部分訊息會一直存在於訊息佇列中,等待被處理。每乙個執行緒只有乙個messagequeue物件
4.looper
looper是每個執行緒中的messagequeue的管家,呼叫looper的loop()方法後,就會進入到無限迴圈中,然後每次發現messagequeue中存在一條訊息,就會將它取出,並傳遞給handler的handlemessage()方法中,每個執行緒中也只會有乙個looper物件。
public class mainactivity extends activity implements onclicklistener
}}public void onclick(view v)
}).start();
}}
非同步訊息處理的整個流程:
首先需要在主線程中建立乙個handler物件,並重寫handlemessage()方法。然後當子執行緒中需要進行ui操作時,就會建立乙個message物件,並通過handler將這條訊息傳送出去(handler.sendmessge(message));之後這條訊息會被新增到messagequeue的佇列中等待被處理,而looper則會一直嘗試從messagequeue中取出待處理的訊息,最後分發回handler的handlemessage()方法中。由於handler是在主線程中執行,所以是在主線程中進行的ui操作。
Android 解析非同步訊息處理機制
android中的非同步訊息處理主要有四個部分組成 message handle messagequeue和looper 1.message message是執行緒之間傳遞的訊息,它可以在內部攜帶少量的資訊,用於在不同執行緒之間交換資料 2.handler 主要用於傳送和處理訊息的。傳送訊息一般是使...
Android非同步訊息處理Handler的使用
眾所周知,android的ui執行緒是不安全的,其它執行緒不可以直接操作ui。那麼就產生了乙個問題 android非同步訊息處理 如何在其它執行緒進行ui更新操作。由於ui都是由主線程繪製的,在進行耗時操作的時候會導致主線程繁忙,最後導致ui介面卡頓或無反應,所以在進行耗時操作的時候我們應該新建一條...
解析非同步訊息處理機制
android 中的非同步訊息處理主要由四個部分組成,message handler messagequeue 和looper。其中 message 和 handler 在上一小節中我們已經接觸過了,而 messagequeue 和 looper對於你來說還是全新的概念,下面我就對這四個部分進行一下...