我想从另一个处理程序(而不是从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();
}
}
答案 0 :(得分:0)
如果由于消息发送到“处理程序”而不是“ LooperThread.mHandler”而是仅将“ LooperThread.mHandler”发送给“处理程序”,您什么都没看到的原因就打印出来了。
我的建议是: -按照@zapl的建议使用HandlerThread并删除睡眠。当循环程序尚未准备就绪时,getLooper将阻塞。 -不要使用“ mHandler”之类的静态变量,尤其是在这种情况下,如果您选择HandlerThread
,则根本不需要“ mHandler”来获取循环器