绘制~performResumeActivity

绘制慢啊,卡顿啊,看过多少trace ,没有时间看代码,有时间看看,顺便记录下概要!!!

桌面点击启动activity ,会走PerformlaunchActivity 和 performResumeActivity

performResumeActivity 里面

1、执行onResume 

2、wm.addView,创建viewRootImp,调用其setView

viewRootimp.setView

1、硬件加速

2、requestLayout()开始绘制流程,这里会丢一个runnable traversal消息到UI 线程,并请求vsync

2、创建inputchannel 、windowInputReciver 

3、windowsession.addToDisplay  创建windowState 并建立window 和 inputchannel 通路

performTraversal

1、vsync 到来,执行runnable traversal,执行measure

2、通过windowsession.relayout 请求layoutwindow

relayoutResult = relayoutWindow(params, viewVisibility, insetsPending);

relayoutWindow

    1、创建surfacecontrol ,就surfacecontrol  跟SF bufferqueuelayer  layer 关联上了,performsurfacleplacement 大刷新及更新focus window 

参考

Android画面显示流程分析(4)_presentandgetreleasefences_长安想胖的博客-CSDN博客

绘制~performResumeActivity_第1张图片

3、surface 跟ANativeWindow 关联起来,跟 BufferQueue  生产者消费者模型关联起来

ThreadedRenderer 通过jni 层RendorProxy 跟 RendorThread 交互

绘制~performResumeActivity_第2张图片

4、draw

参考

理解Android硬件加速原理的小白文 - 简书 (jianshu.com)

Android硬件加速(二)-RenderThread与OpenGL GPU渲染 - 简书 (jianshu.com)

RendorThread 里面也有vsync ,没怎么注意,不看代码还真不知道,应该是GPU 绘制渲染直接给hwc 送显,不经过SF 应该不需要fence 同步

绘制~performResumeActivity_第3张图片

绘制~performResumeActivity_第4张图片

你可能感兴趣的:(android,frameworks,性能优化,android)