2025-02-10

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的專欄

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *