Android中文API(128) —— HandlerThread

weixin_33860553發表於2011-07-17

 

前言

  本章內容是android.os.HandlerThread,版本為Android 3.1 r1,翻譯來自"雪鷹工作室",再次感謝"雪鷹工作室"!歡迎你一起參與Android的中文翻譯,聯絡我over140@gmail.com。

 

宣告

  歡迎轉載,但請保留文章原始出處:)

    部落格園:http://www.cnblogs.com/

    Android中文翻譯組:http://goo.gl/6vJQl

 

 

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迴圈之前執行一些設定,可明確繼承該回撥方法。

(譯者注:如下程式碼:

         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;

 

補充

文章精選

             Android開發入門——handler使用(二)

             AsyncQueryHandler研究

             ThreadLooper以及HandlerMessage詳解 Android開發必讀[Android123]

             android Thread HandlerThread Looper Message MessageQueue Handler的關係

相關文章