vsync-app 信号上行
应用层主要通过Choreographer 来请求、接收 VSYNC 信号,通知应用开始绘制界面,现在从收到Native层上报的 VSYNC 信号开始👀:
在 Choreographer 的内部类FrameDisplayEventReceiver.onVsync 方法中通过 handler 分发消息,在 run 方法中接受处理:
frameworks/base/core/java/android/view/Choreographer.java
doframe 方法主要做了几件事,计算帧率(掉帧打印),分发 CALLBACK_INPUT、CALLBACK_ANIMATION、CALLBACK_INSETS_ANIMATION、CALLBACK_TRAVERSAL、CALLBACK_COMMIT 事件,这里是应用处理输入事件、动画和界面绘制的关键:
其中 CALLBACK_TRAVERSAL 会调用 ViewRootImpl.scheduleTraversals
-> TraversalRunnable.doTraversal -> performT