将消息从不同的处理程序发送到另一个处理程序的消息队列

Sending messages from a different Handler to another handler's message queue

我想从另一个处理程序(不是从 LooperThread mhandler 本身)发送到 LooperThread 的消息队列,但它没有显示任何内容。

thread.sleep是启动mHandler

有什么想法吗?

主要Activity

    new LooperThread().start();
    try {
        Thread.sleep(5000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    Handler handler = new Handler(LooperThread.mHandler.getLooper());

    handler.sendEmptyMessage(3);

LooperThread

class LooperThread extends Thread {
static  Handler mHandler;

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

    mHandler = new Handler() {
        public void handleMessage(Message msg) {
            Log.d("LooperThread","handleMessage");
        }
    };

    Looper.loop();
}
}

你什么都没看到的原因是因为消息发送到 "handler" 而不是 "LooperThread.mHandler" 但只有 "LooperThread.mHandler" 打印了一些东西。

我的建议是: - 按照@zapl 的建议使用 HandlerThread 并删除睡眠。当 looper 没有准备好时,getLooper 会阻塞。 - 不要使用像 "mHandler" 这样的静态变量,特别是在这种情况下,如果你选择 HandlerThread

,你根本不需要 "mHandler" 来获取循环程序