前言
我们知道AMS启动一个APP(Launcher——>AMS—>MyAPP)会创建ActivityThread。也就是ActivityThread是一个App的真正入口,分析View的绘制流程,我们肯定是以ActivityThread为起点来分析。然后抵达一个方法performTraversals
。这个方法是ViewRoot内的一个方法,也是View绘制的真实起点。我们先不讨论它们的具体,本文主要目的是看在它被执行之前都经历了哪些流程。
参考1.Launcher启动流程及初始化
参考2.ActivityThread分析—ActivityThread的main方法是如何被调用的
参考3.ActivityThread分析—ActivityThread的main方法的执行流程分析
代码分析
frameworks\base\core\java\android\app\ActivityThread.java#handleResumeActivity()
wm是WindowManger,其实现类为WindowMangerImpl,我们去看它的addView方法。
final void handleResumeActivity(IBinder token, boolean clearHide, boolean isForward) {
......
if (r != null) {
......
if (r.window == null && !a.mFinished && willBeVisible) {
r.window = r.activity.getWindow();
View decor = r.window.getDecorView();
decor.setVisibility(View.INVISIBLE);
ViewManager wm = a.getWindowManager();
WindowManager.LayoutParams l = r.</