View刷新过程
这里只讨论Java<->JNI之间的刷新,仅限CPU部分。GPU和Display部分需要看C++源码,暂时忽略
- View
- invalidate()
- requestFocus()
- ViewParent
- invalidateChild()
- ViewGroup
- invalidateChildInParent()
- ViewRootImpl
- invalidate()
- invalidateRectOnScreen()
- ViewRootImpl
- scheduleTraversals()
- Choreographer
- postCallback(Choreographer.CALLBACK_TRAVERSAL, mTraversalRunnable, null);
- scheduleFrameLocked(now);
- scheduleVsyncLocked()
- FrameDisplayEventReceiver
- scheduleVsync()
- nativeScheduleVsync(mReceiverPtr);
- android_view_DisplayEventReceiver
- nativeScheduleVsync()
- reveiver->scheduleVsync()
- DisplayEventReceiver
- dispatchVsync
- Choreographer.FrameDisplayEventReceiver
- onVsync
- Choreographer.FrameHandler
- handleCallback
- Choreographer.FrameDisplayEventReceiver
- run
- Choreographer
- doFrame(System.nanoTime(), 0);