if (needWake && p.isAsynchronous())
哪个场景会触发此条件?
为什么在返回true时无需唤醒线程?
Android MessageQueue :
boolean enqueueMessage(Message msg, long when) {
// ... Omit part of the code
synchronized (this) {
// ... Omit part of the code
Message p = mMessages;
boolean needWake;
if (p == null || when == 0 || when < p.when) {
msg.next = p;
mMessages = msg;
needWake = mBlocked;
} else {
needWake = mBlocked && p.target == null && msg.isAsynchronous();
Message prev;
for (;;) {
prev = p;
p = p.next;
if (p == null || when < p.when) {
break;
}
if (needWake && p.isAsynchronous()) {
needWake = false;
}
}
msg.next = p;
prev.next = msg;
}
if (needWake) {
nativeWake(mPtr);
}
}
return true;
}