解析非同步訊息處理機制

2021-08-08 06:42:32 字數 915 閱讀 5090

android中的非同步訊息處理主要由4個部分組成:message,handler,messagequeue和looper。下面我就對這4個部分進行一下簡要的介紹。

handler

handler顧名思義也就是處理者的意思,它主要是用於傳送和處理訊息的。傳送訊息一般使用handler的sendmessage()方法,而發出訊息經過一系列的輾轉處理後,最終會傳遞到handler的handlermessage()方法中。

messagequeue

messagequeue是訊息佇列的意思,它主要用於存放所有通過handler傳送的訊息。這部分訊息會一直存在於訊息佇列中,等待被處理。每個執行緒中只會有乙個messagequeue物件。

looper

looper是每個執行緒中的messagequeue的管家,呼叫looper的loop()方法後,就會進入到乙個無限迴圈當中,然後每當發現messagequeue中存在一條訊息,就會將它取出,並傳遞到handler的handlermessage()方法中。每個執行緒中也只會有乙個looper物件。

連線了各部分的基本概念,我們再來把非同步訊息處理的整個流程梳理一遍:

首先需要在主線程當中建立乙個handler物件,並重寫handlermessage()方法。然後當子執行緒中需要進行ui操作時,就建立乙個message物件,並通過handler將這條訊息傳送出去。之後這條訊息會被新增到messagequeue中等待被處理,而looper則會一直嘗試從messagequeue中取出待處理的訊息,最後分發回handler的handlermessage()方法中。由於handler是在主線程中建立的,所以此時handlermessage()方法中的**也會在主線程執行,於是我們就可以在這裡安心的進行ui操作了。整個非同步訊息處理機制的流程示意圖如圖所示:

而使用runonuithread()方法其實也是乙個非同步訊息處理機制的介面封裝。

解析非同步訊息處理機制

android 中的非同步訊息處理主要由四個部分組成,message handler messagequeue 和looper。其中 message 和 handler 在上一小節中我們已經接觸過了,而 messagequeue 和 looper對於你來說還是全新的概念,下面我就對這四個部分進行一下...

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

android中的非同步訊息處理主要由四部分組成,message handler messagequeue looper.1.message message是執行緒之間傳遞的訊息,它可以在內部攜帶少量的資訊,用於在不同執行緒之間交換資料。message有what欄位,除此以外,還可以使用arg1和a...

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

android中的非同步訊息處理主要有四個部分組成 message handle messagequeue和looper 1.message message是執行緒之間傳遞的訊息,它可以在內部攜帶少量的資訊,用於在不同執行緒之間交換資料 2.handler 主要用於傳送和處理訊息的。傳送訊息一般是使...