前言
本章內容是android.os.HandlerThread,版本為Android 3.1 r1,翻譯來自"雪鷹工作室",再次感謝"雪鷹工作室"!歡迎你一起參與Android的中文翻譯,聯絡我over140@gmail.com。
宣告
歡迎轉載,但請保留文章原始出處:)
HandlerThread
譯者署名:雪鷹工作室
版本:Android 3.1 r1
結構
繼承關係
public class HandleThread extends Thread
java.lang.Object
java.lang.Thread
android.os.HandlerThread
類概述
用於方便的建立一個含有looper的執行緒類。looper用來建立handler類。請注意,仍然需要呼叫start()方法。
建構函式
public HandlerThread (String name)
構造一個HandlerThread
public HandlerThread (String name, int priority)
構造一個HandlerThread
引數
priority 執行執行緒的優先順序,這個值是由Android.os.Process提供而不是來自java.lang.Thread.
公共方法
public Looper getLooper ()
這個方法返回與此執行緒相關的Looper。如果該執行緒不能啟動或是由於某種原因isAlive()方法返回false,則這個方法返回null,假如這個執行緒已經啟動,那麼此方法將阻塞,直到looper被初始化。
返回值
Looper
public int getThreadId ()
返回執行緒的標誌。詳見:Process.myTid()
public boolean quit ()
檢視當前執行的looper是否已經退出。假如執行緒這未啟動或者已經結束(即getLooper()方法返回null),這個方法將返回false。否則looper被要求退出並返回true。
public void run ()
呼叫設定Runnable物件的run()方法。如果沒有設定Runnable,什麼也不做。
受保護方法
protected void onLooperPrepared ()
如果需要在Looper迴圈之前執行一些設定,可明確繼承該回撥方法。
(譯者注:如下程式碼:
mTid = Process.myTid();
Looper.prepare();//建立一個Looper例項,並且儲存在ThreadLocal中,ThreadLocal中維護一個HashMap,鍵是執行緒號
synchronized (this) {
mLooper = Looper.myLooper();//得到當前執行緒的Looper,就是剛才perpare方法中建立並儲存的那個Looper例項
Process.setThreadPriority(mPriority);
notifyAll();
}
onLooperPrepared();
Looper.loop();//開始輪詢
mTid = -1;
)
補充
文章精選
Thread和Looper以及Handler和Message詳解 Android開發必讀[Android123]
android Thread HandlerThread Looper Message MessageQueue Handler的關係