1.调用postSyncBarrier插入target为null的Message
这种消息为屏障消息,返回token,通过token可以移除这个屏障消息
public final class MessageQueue {
public int postSyncBarrier() {
return postSyncBarrier(SystemClock.uptimeMillis());
}
private int postSyncBarrier(long when) {
// Enqueue a new sync barrier token.
// We don't need to wake the queue because the purpose of a barrier is to stall it.
synchronized (this) {
final int token = mNextBarrierToken++;
//创建的Message target为null
final Message msg = Message.obtain();
msg.markInUse(); //放入链表之前
msg.when = when;
msg.arg1 = token;
Message prev = null;
Message p = mMessages;
//在链表里,替when找到合适的位置
if (when != 0) {
while (p != null && p.when <= when) {
prev = p;
p = p


5214

被折叠的 条评论
为什么被折叠?



