今天面试官问我,messageQueue的底层是什么,我就脱口而出是队列,每次都从头取走msg,就真的以为是先进先出的队列,面试官还反问我,再想一下,是队列还是链表,然后我说不是队列吗,他让我下去再看一下
boolean enqueueMessage(Message msg, long when) {
... ...//省略
synchronized (this) {
if (mQuitting) {//如果中止了,直接返回
IllegalStateException e = new IllegalStateException(
msg.target + " sending message to a Handler on a dead thread");
Log.w(TAG, e.getMessage(), e);
msg.recycle();
return false;
}
msg.markInUse();
msg.when = when;
Message p = mMessages;
boolean needWake;
if (p == null || when == 0 || when |