【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流程。

延伸问答

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数据合成并显示到屏幕上。

🏷️

标签

➡️

继续阅读