绘制~performResumeActivity

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

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

performResumeActivity 里面

1、执行onResume 

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

viewRootimp.setView

1、硬件加速

2、requestLayout()开始绘制流程,这里会丢一个traversal 类型callback,并请求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 

见 计算窗口大小(二) (betheme.net)

参考

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

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

ThreadedRenderer 通过jni 层RendorProxy 跟 RendorThread 交互

4、draw

参考

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

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

RendorThread 里面也有vsync ,版本差异? 不是trasaction.apply() 提交SF 时,SF 请求vsync ?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值