new Thread(new Runnable() {
@Override
public void run() {
Looper.prepare();
Message msg = new Message();
msg.obj = new test("I am handle");
handle.sendMessage(msg);
// Looper.loop();
Log.e("", "I am block test");
}
}).start();
final Handler handle = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
test ttt = (test) msg.obj;
Log.e("", "" + ttt.test);
}
};
问题有三个:
Looper.loop()如果不放的话,handleMessage还是接收的到数据
放与不放只差别在后面的block test有没有跑到而已
1. 我在sendMessage里面没有找到dispatchMessage,找到底就是enqueueMessage
sendMessage到底是什么时候call到handleMessage的?
2. 我想要在queue里面多放一些message来验证loop(),但我不知道怎么下手
请问我要如何在其他线程sendMessage到子线程的looper里面来呢?
3.loop()里面的死循环是长这样的
for (;;) {
Message msg = queue.next(); // might block
if (msg == null) {
// No message indicates that the message queue is quitting.
return;
}
看起来只要没有message进来就会跳掉了,那到底block在哪个地方呢?
问题有点多,希望有人能帮我解惑...