【Android 13源码分析】WMS-添加窗口(addWindow)流程-1-应用进程处理
内容提要
本文介绍了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流程。
延伸问答
Android中addWindow流程的主要步骤是什么?
addWindow流程主要包括创立WindowState、relayout和finishDrawing三个步骤。
在addWindow流程中,relayout的作用是什么?
relayout流程触发Surface的创立,并进行窗口位置的摆放逻辑。
ViewRootImpl的setView方法在addWindow流程中起什么作用?
setView方法触发跨进程通讯,通知WMS执行addWindow逻辑。
APP进程在addWindow流程中执行哪些操作?
APP进程在addWindow流程中执行onCreate和onResume生命周期,创立Window并调用addView。
WindowManagerGlobal在addWindow流程中有什么作用?
WindowManagerGlobal是单例,负责管理窗口的添加和处理,调用addView方法。
addWindow流程中,finishDrawing的作用是什么?
finishDrawing流程将UI数据合成并显示到屏幕上。