Android筆記三(Handler)

關於Android消息機制中的另外一個類Handler,我在之前的兩篇文章中有做講解
handler message looper機制
handler message looper機制(二)
這裏再做下總結:
Handler處理消息的過程:

  • 首先,檢查Message的callBack是否爲空,不爲空就讓HanderCallback來處理消息,這個callback是一個Runnable對象,也就是post方法中所傳遞的Runnable參數。handlerCallback中直接run這個對象,結束;通過Handler.post()發送消息就是走的這個流程msg.callback = runnable
  • 然後檢測mCallback是否爲空,不爲空就讓mCallback的handlerMessage來處理這個消息,結束。看下CallBack接口的定義
    這裏寫圖片描述
    也就是我們每次new Handler(Callback);中實現測Callback接口。mCallback爲我們自己實現的接口,裏面會實現handlerMessage這個方法
  • 如果這些都爲空,最後給Handler的handerMesage來處理消息,見圖中下面一個handleMessage方法。這就是我們最常用的new Handler(複寫handlerMessage方法),在複寫的方法中去處理。
    這裏寫圖片描述

此外,我們在平時還會遇到使用HandlerThread的情況,這種情況往往就是我們在子線程中去完成一些複雜的操作,然後在子線程中發送消息回到主線程中更新等等。通常這樣的情況我們需要在創建子Thread後手動Looper.prepare,Looper.loop()等操作。而HandlerThread會直接把這些完成,就像主線程也就默認產生並開啓一個Looper對象一樣。所以我們只需要下面這一步,就可以實例化一個子線程Handler
這裏寫圖片描述

發佈了36 篇原創文章 · 獲贊 5 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章