android R版本应用程序窗口流程源码分析

本文详细分析了Android R版本应用程序窗口的流程,包括Activity的addWindow阶段、relayoutWindow阶段、finishDrawingWindow阶段以及系统Traverser阶段。重点讨论了窗口的添加、布局、绘制和状态更新,涉及ViewRootImpl、WindowState、SurfaceControl等关键概念。
摘要由CSDN通过智能技术生成

        应用启动时,Activity组件在启动之后(生命周期部分参见android R版本应用程序启动过程源码分析),在执行完onResume生命周期之后会执行添加窗口到系统、计算窗口大小和位置、应用执行measure-layout-draw、系统窗口状态刷新、系统动效(动效部分参见android R版本AppTransition动效源码分析)这几个动作。

1、 addWindow阶段

        Activity的启动本质实际最终也是使用WindowManageraddView(add一个DecorView对象)进而使得wms调用addWindow增加一个WindowState对象,而ActivityaddView动作发生在Activity.onResume之后(冷起activity才会有addView),也就是说只要onResume执行不完,肯定不会添加窗口到wms,依据activity指定的主题此时屏幕会显示主题色比如黑色白色(跨栈跳转场景则显示StartingWindow)等。此时创建出来的WindowState对应的状态mDrawStateNO_SURFACE(查看方法使用adb shell dumpsys window windows,具体参见android R版本常见dump信息分析),addWindow操作会注册InputChannelIMS以便窗口能够接受input事件,添加窗口如果要通过applogcat<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值