溫馨提示×

Looper.prepare()和Looper.loop()怎么使用

小億
254
2024-01-19 10:17:23
欄目: 編程語言

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() 方法來停止循環,否則會造成線程無法退出的問題。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女