1. 繼承關系
java.lang.Object
|______java.lang.Thread
|______android.os.HandlerThread
2. 類概要
這個類能夠方便的啟動一個新的線程,這個線程帶有一個消息循環。這個消息循環能夠被用來創建Handler類及其子類。要註意的是,線程的start()方法必須依然要被調用。
這個類繼承自java.lang.Thread類。
Public 構造器如下:
A. HandlerThread(String name)
B. HandlerThread(String name, int priority)
Public方法如下:
A. getLooper():這方法返回一個跟線程關聯的Looper對象
B. getThreadId():這個方法返回本線程的標示。
C. quit():請求退出當前正在運行的消息循環。
D. run():調用接受者所持有的Runnable對象的run()方法。
Protected方法:
onLooperPrepared():它是一個回調方法,如果在啟動消息循環之前,需要執行一些安裝任務,那麼可以明確的重寫這個方法。
繼承的方法:
這個類繼承瞭以下三個類的方法:
A. java.lang.Thread
B. java.lang.Object
C. java.lang.Runnable
3. 構造器說明:
public HandlerThread(String name)
public HandlerThread(String name, int priority)
這兩個構造器都能夠創建一個HandlerThread對象。
參數說明:
priority:定義線程運行的優先級。這個值必須是android.os.Process類所支持的值,而不是來自java.lang.Thread類。
4. Public方法說明
A.public Looper getLooper()
這個方法翻譯跟線程相關聯的Looper對象。如果這個線程沒有被啟動或者因為一些原因而是isAlive()方法返回瞭false,那麼這個方法就會返回null。如果這個線程已經被啟動瞭,這個方法會被阻塞,直到這個消息循環被初始化完成。
返回值:Looper對象
B.public int getThreadId()
這個方法返回本線程的標識,詳細請看Process.myTid()。
C.public boolean quit()
請求退出當前正在運行的消息循環。如果線程還沒有被啟動或者線程已經執行完成(這種情況下,getlooper()返回null),那麼這個方法會返回false,否則這個消息循環被要求退出,並返回true。
D.public void run()
調用接收器所持有的Runnable對象的run()方法。如果沒有Runnable對象被設置,則什麼事情也不做。
5. Protected方法:
protected void onLooperPrepared()
這是一個回調方法,如果在啟動消息循環之前,需要執行一些設置動作,就可以明確的覆寫這個方法。
摘自 FireOfStar的專欄