?
本文檔使用 PHP中文網(wǎng)手冊(cè) 發(fā)布
HandlerThread
版本:Android 3.1 r1
?
結(jié)構(gòu)
繼承關(guān)系
public class HandleThread extends Thread
????????
java.lang.Object
java.lang.Thread
??? ??? android.os.HandlerThread
?
類概述
用于方便的創(chuàng)建一個(gè)含有looper的線程類。looper用來創(chuàng)建handler類。請(qǐng)注意,仍然需要調(diào)用start()方法。
?
構(gòu)造函數(shù)
public HandlerThread (String name)
構(gòu)造一個(gè)HandlerThread
?
public HandlerThread (String name, int priority)
構(gòu)造一個(gè)HandlerThread
參數(shù)
priority? 運(yùn)行線程的優(yōu)先級(jí),這個(gè)值是由Android.os.Process提供而不是來自java.lang.Thread.
?
公共方法
public Looper getLooper ()
這個(gè)方法返回與此線程相關(guān)的Looper。如果該線程不能啟動(dòng)或是由于某種原因isAlive()方法返回false,則這個(gè)方法返回null,假如這個(gè)線程已經(jīng)啟動(dòng),那么此方法將阻塞,直到looper被初始化。
返回值
Looper
?
public int getThreadId ()
返回線程的標(biāo)志。詳見:Process.myTid()
?
public boolean quit ()
查看當(dāng)前運(yùn)行的looper是否已經(jīng)退出。假如線程這未啟動(dòng)或者已經(jīng)結(jié)束(即getLooper()方法返回null),這個(gè)方法將返回false。否則looper被要求退出并返回true。
?
public void run ()
調(diào)用設(shè)置Runnable對(duì)象的run()方法。如果沒有設(shè)置Runnable,什么也不做。
?
受保護(hù)方法
protected void onLooperPrepared ()
如果需要在Looper循環(huán)之前執(zhí)行一些設(shè)置,可明確繼承該回調(diào)方法。
(譯者注:如下代碼:
???????? void run() {
?????????????????? mTid = Process.myTid();
?????????????????? Looper.prepare();//創(chuàng)建一個(gè)Looper實(shí)例,并且存儲(chǔ)在ThreadLocal中,ThreadLocal中維護(hù)一個(gè)HashMap,鍵是線程號(hào)
???????? ???????? synchronized (this) {
??????????????????????????? mLooper = Looper.myLooper();//得到當(dāng)前線程的Looper,就是剛才perpare方法中創(chuàng)建并存儲(chǔ)的那個(gè)Looper實(shí)例
??????????????????????????? Process.setThreadPriority(mPriority);
??????????????????????????? notifyAll();
?????????????????? }
???????? onLooperPrepared();
???????? Looper.loop();//開始輪詢
???????? mTid = -1;
)
?
補(bǔ)充
文章精選
??? ???????? Android開發(fā)入門——handler使用(二)
??? ???????? AsyncQueryHandler研究
?????????????????? Thread和Looper以及Handler和Message詳解 Android開發(fā)必讀 [Android123]
?????????????????? android Thread HandlerThread Looper Message MessageQueue Handler的關(guān)系