作者回复:
记住一点,能直接在合成线程中完成的任务都不会改变图层的内容,如文字信息的改变,布局的改变,颜色的改变,统统不会涉及,涉及到这些内容的变化就要牵涉到重排或者重绘了。
能直接在合成线程中实现的是整个图层的几何变换,透明度变换,阴影等,这些变换都不会影响到图层的内容。
比如滚动页面的时候,整个页面内容没有变化,这时候做的其实是对图层做上下移动,这种操作直接在合成线程里面就可以完成了。
再比如文章题目列子中的旋转操作,如果样式里面使用了will-change ,那么这些box元素都会生成单独的一层,那么在旋转操作时,只要在合成线程将这些box图层整体旋转到设置的角度,再拿旋转后的box图层和背景图层合成一张新图片,这个图片就是最终输出的一帧,整个过程都是在合成线程中实现的。
作者回复: 这块资料比较少,都是通过chromium源码还有blinkon上一些视频总结的。
blinkon:https://www.youtube.com/channel/UCIfQb9u7ALnOE4ZmexRecDg
Chromium源码: https://chromium.googlesource.com/chromium/src
https://chromium.googlesource.com/chromium/src/+/master/docs/README.md
不过源码看起来会比较吃力,里面充斥着大量的回调,梳理起来也是非常不轻松的
作者回复: 嗯。多谢指正
作者回复: 嗯 标题是不算严谨,修订时我会做一些调整
作者回复: 加餐会提到一些,但是不是专门讲这几个的
作者回复: 这里面执行的是合成操作,效率最高