Choreographer源码

来源:互联网 发布:网络歌手麦子 编辑:程序博客网 时间:2024/03/29 20:01

协调展示的基础类

  • 是ThreadLocal的,所有的run,都是在本Looper中
  • frame间隔是10ms不是16ms,避免掉帧
  • 使用DisplayEventReceiver同步vSync
  • 独立的final Object作为锁
  • 对于单次任务队列,最快的实现是用链表,使用时直接通过修改next将队列分割成两个
CallbackRecord callbacks = mHead;            if (callbacks == null || callbacks.dueTime > now) {                return null;            }            CallbackRecord last = callbacks;            CallbackRecord next = last.next;            while (next != null) {                if (next.dueTime > now) {                    last.next = null;                    break;                }                last = next;                next = next.next;            }            mHead = next;            return callbacks;
0 0