doFrame()被调用流程
2016-09-20 11:23:51 0 举报
doFrame()调用流程
作者其他创作
大纲/内容
是一个ThreadLocal对象
FrameHandler 类
实现
mHasPostedCallback
这里传递的是 DispatchUIFrameCallback类
实际上这里的Callback 是 ReactChoreographerDispacher 类了
考虑一下,React为什么这样子做呢?不太清楚,
ReactChoreographerDispatcher 类
监听着Activity的生命周期,在Activity的onResume()会回调onHostResume()方法,具体实现参看 XReactInstanceManagerImpl 类
在Choregrapher类的schedleFrameLocked()方法中,首先会判断上一帧的操作是否还没有执行完,如果是的话,直接取消当前这一帧。如果不是,则执行这一帧,接着会请求 Vsync 信息,然后调用 doFrame()方法。
ReactChoreographer类
UIManagerModule.onHostResume()方法
CallBack 被当作 Message.obj 参数发送出去
是
ReactChoreographer调用postFrameCallback()方法,传递一个CallBack和其Type
这里会把 ReactChoreographer 类里面存储的五种Callback队列进行遍历
UIImplementation.onHostResume()方法
scheduleFrameLocked()
Choreographer 类
调用的是这个类的doFrame()方法
操蛋就在这里了doFrameGuarded()又调用了 ReactChoreographer的postFrameCallback()方法,这样的话,等于死循环了
postFrameCallback(Calback)方法
Chroeographer.doFrame()
doFrameGuarded()方法
postCallbackDelayedInternal()方法
UIViewOperationQueue.resumeFrameCallback()
handleMessage()
这里将全部类型的Callback队列出队,然后执行每个CallBack的doFrame()方法
LifecycleEventListener接口
0 条评论
下一页