
前言
-
多線程的應(yīng)用在Android開發(fā)中是非常常見的,常用方法主要有:
- 繼承Thread類
- 實(shí)現(xiàn)Runnable接口
- Handler
- HandlerThread
- AsyncTask
今天,我將獻(xiàn)上一份全面 & 詳細(xì)的
HandlerThread機(jī)制的學(xué)習(xí)指南,內(nèi)容包括:定性認(rèn)知、定量使用、工作原理 & 源碼分析,希望你們會喜歡。
Carson帶你學(xué)多線程系列
基礎(chǔ)匯總
Android多線程:基礎(chǔ)知識匯總
基礎(chǔ)使用
Android多線程:繼承Thread類使用(含實(shí)例教程)
Android多線程:實(shí)現(xiàn)Runnable接口使用(含實(shí)例教程)
復(fù)合使用
Android 多線程:AsyncTask使用教程(含實(shí)例講解)
Android 多線程:AsyncTask原理及源碼分析
Android多線程:HandlerThread使用教程(含實(shí)例講解)
Android多線程:HandlerThread原理及源碼分析
Android多線程:IntentService使用教程(含實(shí)例講解)
Android多線程:IntentService的原理及源碼分析
Android多線程:線程池ThreadPool全方位教學(xué)
相關(guān)使用
Android異步通信:這是一份全面&詳細(xì)的Handler機(jī)制學(xué)習(xí)攻略
Android多線程:手把手教你全面學(xué)習(xí)神秘的Synchronized關(guān)鍵字
Android多線程:帶你了解神秘的線程變量 ThreadLocal
目錄

1. 定義
一個Android 已封裝好的輕量級異步通信類
2. 作用
- 實(shí)現(xiàn)多線程
在工作線程中執(zhí)行任務(wù),如 耗時任務(wù) - 異步通信、消息傳遞
實(shí)現(xiàn)工作線程 & 主線程(UI線程)之間的通信,即:將工作線程的執(zhí)行結(jié)果傳遞給主線程,從而在主線程中執(zhí)行相關(guān)的UI操作
從而保證線程安全
3. 優(yōu)點(diǎn)
方便實(shí)現(xiàn)異步通信,即不需使用 “任務(wù)線程(如繼承Thread類) + Handler”的復(fù)雜組合
實(shí)際上,HandlerThread本質(zhì)上是通過繼承Thread類和封裝Handler類的使用,從而使得創(chuàng)建新線程和與其他線程進(jìn)行通信變得更加方便易用
4. 工作原理
內(nèi)部原理 = Thread類 + Handler類機(jī)制,即:
- 通過繼承
Thread類,快速地創(chuàng)建1個帶有Looper對象的新工作線程 - 通過封裝
Handler類,快速創(chuàng)建Handler& 與其他線程進(jìn)行通信
5. 具體使用
-
HandlerThread的本質(zhì):繼承Thread類 & 封裝Handler類 -
HandlerThread的使用步驟分為5步
// 步驟1:創(chuàng)建HandlerThread實(shí)例對象
// 傳入?yún)?shù) = 線程名字,作用 = 標(biāo)記該線程
HandlerThread mHandlerThread = new HandlerThread("handlerThread");
// 步驟2:啟動線程
mHandlerThread.start();
// 步驟3:創(chuàng)建工作線程Handler & 復(fù)寫handleMessage()
// 作用:關(guān)聯(lián)HandlerThread的Looper對象、實(shí)現(xiàn)消息處理操作 & 與其他線程進(jìn)行通信
// 注:消息處理操作(HandlerMessage())的執(zhí)行線程 = mHandlerThread所創(chuàng)建的工作線程中執(zhí)行
Handler workHandler = new Handler( mHandlerThread.getLooper() ) {
@Override
public boolean handleMessage(Message msg) {
...//消息處理
return true;
}
});
// 步驟4:使用工作線程Handler向工作線程的消息隊(duì)列發(fā)送消息
// 在工作線程中,當(dāng)消息循環(huán)時取出對應(yīng)消息 & 在工作線程執(zhí)行相關(guān)操作
// a. 定義要發(fā)送的消息
Message msg = Message.obtain();
msg.what = 2; //消息的標(biāo)識
msg.obj = "B"; // 消息的存放
// b. 通過Handler發(fā)送消息到其綁定的消息隊(duì)列
workHandler.sendMessage(msg);
// 步驟5:結(jié)束線程,即停止線程的消息循環(huán)
mHandlerThread.quit();
- 關(guān)于更加詳細(xì)的講解 & 實(shí)例應(yīng)用請看文章:Android多線程:手把手教你使用HandlerThread
6. 源碼分析
- 本次源碼分析將根據(jù)
HandlerThread的使用步驟講解 - 具體請看文章:Android多線程:這是一份詳細(xì)的HandlerThread源碼分析攻略
7. 總結(jié)
- 本文全面介紹了多線程
HandlerThread,包括定性認(rèn)知、具體使用、工作原理、源碼分析等等 - 下一篇文章我將對講解
Android多線程的相關(guān)知識,感興趣的同學(xué)可以繼續(xù)關(guān)注Carson_Ho的簡書
Carson帶你學(xué)多線程系列
基礎(chǔ)匯總
Android多線程:基礎(chǔ)知識匯總
基礎(chǔ)使用
Android多線程:繼承Thread類使用(含實(shí)例教程)
Android多線程:實(shí)現(xiàn)Runnable接口使用(含實(shí)例教程)
復(fù)合使用
Android 多線程:AsyncTask使用教程(含實(shí)例講解)
Android 多線程:AsyncTask原理及源碼分析
Android多線程:HandlerThread使用教程(含實(shí)例講解)
Android多線程:HandlerThread原理及源碼分析
Android多線程:IntentService使用教程(含實(shí)例講解)
Android多線程:IntentService的原理及源碼分析
Android多線程:線程池ThreadPool全方位教學(xué)
相關(guān)使用
Android異步通信:這是一份全面&詳細(xì)的Handler機(jī)制學(xué)習(xí)攻略
Android多線程:手把手教你全面學(xué)習(xí)神秘的Synchronized關(guān)鍵字
Android多線程:帶你了解神秘的線程變量 ThreadLocal
歡迎關(guān)注Carson_Ho的簡書
不定期分享關(guān)于安卓開發(fā)的干貨,追求短、平、快,但卻不缺深度。
