Handler的理解和使用

2021-09-18 05:36:07 字數 1418 閱讀 4057

一、handler簡介

handler是android給我們提供的用來更新ui(user inte***ce)的一套機制,也是一套資訊處理機制,我們可以通過他傳送訊息和處理訊息

為什麼要是使用handler?

其在設計的時候,就封裝了一套資訊建立、傳遞和處理的機制,如果不遵守這種機制,就會丟擲異常:calledfromwrongthreadexception

二、handler的原理

** 2-1 looper(輪詢)**

內部包含乙個訊息列隊(messagequeue),所有的handler傳送的訊息都會儲存到這個佇列

lopper.looper()方法是乙個死迴圈,不斷的從messagequeue中取訊息,如果有訊息就取訊息,沒有就阻塞

2-2 handler封裝了訊息的傳送(主要把訊息傳送給誰)**

內部會跟looper關聯,也就是handler內部可以找到looper,找到looper也就找到了messagequeue handler傳送訊息就是向訊息佇列messagequeue中傳送訊息

總結:handler 負責傳送訊息,looper負責接收handler傳送的訊息,並直接把訊息回傳給handler自己;

messagequeue就是乙個訊息佇列,儲存所有handler傳送的訊息

2-3 handler執行機制:

handler機制也叫非同步訊息機制,主要由4個部分組成:message, messagequeue, handler, looper.具體講解如下:

1)message

顧名思義就是處理著的意思。其主要是在子執行緒中呼叫handler.sendmessage()傳送訊息,在ui執行緒呼叫handlermessage()方法處理message。

3)messagequeue

訊息佇列的意思,其用於存放所有通過handler.sendmessage()傳送過來的訊息,這些訊息一直被存放在訊息佇列中等待被處理。每個執行緒只會有乙個messagequeue物件。messagequeue底層資料結構是佇列。

4)looper

looper是每個執行緒中的messagequeue的管家,呼叫looper.loop()方法後,looper便會將messagequeue中訊息取出傳遞到handle.handlemessage().每個執行緒只有乙個looper物件。

控制代碼Handler的理解

總的來說,控制代碼可以簡單理解為指標,乙個指向指標的指標。控制代碼是wondows用來標識被應用程式所建立或使用的物件的唯一整數,windows使用各種各樣的控制代碼標識諸如應用程式例項,視窗,控制,位圖 gdi物件等等。windows控制代碼有點象c語言中的檔案控制代碼。由以上的引用可知,控制代碼...

Handler的使用(二)

一 handler與執行緒 handler在預設情況下,實際上它和呼叫它的activity處於同乙個執行緒。例如在handler的使用 一 示例1當中,雖然宣告了執行緒物件,但是在實際呼叫當中它並沒有呼叫執行緒的start 方法,而是直接呼叫當前執行緒的run 方法。public class han...

如何使用Handler

1 完成定時任務 1 handle傳送訊息方式 handle有兩類傳送訊息的方式 一類是post 方法,該方法把乙個runnable物件傳送到訊息佇列,從而當訊息被處理時,能夠執行runnable物件 另一類是send 方法,該方法用於傳送乙個message型別的訊息到訊息佇列,當訊息被處理時,系統...