总结
同步屏障(synchronization barrier)是 Handler 消息机制中的一种机制。Handler 发送的消息有同步消息和异步消息两种类型,通过 Message.isAsynchronous() 判断。同步屏障就是在 MessageQueue 中添加一道屏障(一个 Message.target == null 的消息),当 Looper 从 MessageQueue.next() 中取消息时,如果遇到 message.target == null,就会先把同步消息给屏蔽掉,优先处理异步消息。
添加同步屏障是只有 Android 源码内部可以使用的,我们普通开发者无法使用,它的使用场景是在 ViewRootImpl 中,当触发 UI 的测量、布局、绘制前添加,保证它们被优先进行处理,从而减少掉帧与卡顿的发生。
参考
- https://juejin.cn/post/6940607471153053704?share_token=cbcc9678-597b-49e0-b2a2-85280117d4fd