ndroid中文API(128) —— HandlerThread – Android移動開發技術文章_手機開發 Android移動開發教學課程

結構

繼承關系

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循環之前執行一些設置,可明確繼承該回調方法。

(譯者註:如下代碼:

         void run() {

                   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;

 

You May Also Like