【Android 13源码分析】WMS-添加窗口(addWindow)流程-1-应用进程处理
💡
原文中文,约19800字,阅读约需48分钟。
📝
内容提要
本文介绍了Android中Activity的addWindow流程,包括创立WindowState、relayout和finishDrawing三个过程。文章详细解释了APP进程中addWindow的流程,包括创立Window、设置WindowManager、调用addView等步骤。最后,文章提到了ViewRootImpl的setView方法触发了跨进程通讯,将后续流程交给了WMS处理。
🎯
关键要点
- Android中Activity的addWindow流程包括创立WindowState、relayout和finishDrawing三个过程。
- addWindow流程是创立WindowState并挂载到窗口树上。
- relayout流程触发Surface的创立,并进行窗口位置的摆放逻辑。
- finishDrawing流程将UI数据合成并显示到屏幕上。
- 使用进程创立Window后,调用WindowManagerGlobal::addView方法,触发ViewRootImpl::setView方法。
- ViewRootImpl的setView方法触发跨进程通讯,通知WMS执行addWindow逻辑。
- APP进程在Activity的onCreate和onResume生命周期中执行addWindow相关操作。
- Activity通过attach方法创立PhoneWindow并设置WindowManager。
- WindowManagerGlobal是单例,负责管理窗口的添加和处理。
- ViewRootImpl的addView方法通过Session调用WMS的addWindow方法,完成addWindow流程。
➡️