Android 解析非同步訊息處理機制

2021-07-15 19:49:13 字數 1080 閱讀 8641

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對於你來說還是全新的概念,下面我就對這四個部分進行一下...