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

时间:2018-08-07 21:28:29

标签: android multithreading handler looper android-looper

我想从另一个处理程序(而不是从LooperThread mhandler本身)发送到LooperThread的消息队列,但是它什么都不显示。

thread.sleep用于启动mHandler。

有什么想法吗?

主要活动

    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();
}
}

1 个答案:

答案 0 :(得分:0)

如果由于消息发送到“处理程序”而不是“ LooperThread.mHandler”而是仅将“ LooperThread.mHandler”发送给“处理程序”,您什么都没看到的原因就打印出来了。

我的建议是: -按照@zapl的建议使用HandlerThread并删除睡眠。当循环程序尚未准备就绪时,getLooper将阻塞。 -不要使用“ mHandler”之类的静态变量,尤其是在这种情况下,如果您选择HandlerThread

,则根本不需要“ mHandler”来获取循环器