Проблема:
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;
}