2025-02-10

1. 繼承關系

java.lang.Object

|____android.os.Looper

2. 類概要

這個類被用來給線程返回一個消息循環。默認情況下,沒有跟線程相關聯的消息循環;在線程中調用prepare()方法會運行這個循環,並且loop()方法會一直處理消息,直到循環被終止。

跟消息循環的大多數交互是通過Handler類來完成的。

以下是消息循環線程實現的典型的例子,它使用prepare()和loop()方法把用於跟Looper通信的初始Handler對象的創建過程夾在中間:

class LooperThread extends Thread {
public Handler mHandler;

public void run() {
Looper.prepare();

mHandler = new Handler() {
public void handleMessage(Message msg) {
// process incoming messages here
}
};

Looper.loop();
}
}

3. 類說明

  

Public方法
void dump(Printer pw, String prefix)
synchronized static Looper getMainLooper()
返回應用程序的主循環,應用程序就生活在這個主線程中。
Thread getThread()
返回跟這個消息循環關聯的線程。
static void loop()
運行線程中的消息隊列。必須確保調用quit()方法來結束循環。
static Looper myLooper()
返回跟當前線程相關聯的Looper對象。如果線程與一個Looper對象相關聯,那麼就返回null。
static MessageQueue myQueue()
返回跟當前線程向關聯的MessageQueue對象。這個隊列必須線程正在運行的Looper對象所調用的隊列,如果有異常,則會拋出一個NullPointerException類型異常。
static void prepare()
把當前線程當做一個消息循環來初始化。它提供瞭一個在啟動消息消息循環之前,創建消息循環所要引用的處理器的機會。調用這個方法之後,必須確保調用loop()方法,並且通過調用quit()方法來結束消息循環。
static void prepareMainLooper()
把當前線程當做一個消息循環來初始化,並把這個線程標記為應用程序的主線程。因為應用程序的主消息循環是由Android環境創建的,因此我們沒有必要調用這個方法。
void quit()
String toString()
返回一個簡要的外人能夠讀懂的描述本對象的字符串。
void setMessageLogging(Printer printer)
控制該Looper處理的日志信息。如果啟用這個功能,那麼在每次消息分發的開始和結束時,表示目標Handler對象和消息內容的log消息會被寫入Printer對象。
參數說明:
printer:一個接受log消息的Printer對象,如果參數值null,則禁用消息日志。

繼承方法來自java.lang.Object。
 

摘自 作者:FireOfStar

發佈留言

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