Looper.prepare() 方法用于初始化當前線程的 Looper 對象,該方法應該在當前線程的 Handler 或者 MessageQueue 使用之前調用。
Looper.loop() 方法是 Looper 類的核心方法,它會啟動一個無限循環,在循環中不斷地從當前線程的 MessageQueue 中取出消息進行處理。該方法會一直阻塞當前線程,直到調用 Looper.quit() 方法停止循環。
下面是一個簡單的示例,演示了如何使用 Looper.prepare() 和 Looper.loop() 方法:
public class MyThread extends Thread {
public Handler mHandler;
@Override
public void run() {
// 初始化 Looper
Looper.prepare();
// 創建 Handler
mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
// 處理消息
// ...
}
};
// 啟動循環
Looper.loop();
}
}
在上述示例中,我們創建了一個線程類 MyThread
,在 run()
方法中調用了 Looper.prepare()
初始化 Looper 對象,并創建了一個 Handler 對象。然后調用 Looper.loop()
方法啟動循環。
在循環中,可以通過調用 mHandler.sendMessage()
發送消息,然后在 handleMessage()
方法中處理消息。
需要注意的是,Looper.loop() 方法會一直阻塞當前線程,因此要確保在合適的時候調用 Looper.quit() 方法來停止循環,否則會造成線程無法退出的問題。