ActivityThread

handleBindApplication

1,生成LoadedApk、Instrumentation、调用Instrumentation.init()方法

image.png

LoadedApk类里面调用了makeApplication(), makeApplication方法里面通过调用Instrumentaition的newApplication()和callApplicationOnCreate()来生成Application实例并调用onCreate方法

image.png

2,handleLaunchActivity方法

生成activity实例,


image.png

进入performLaunchActivity方法

通过管家Instrumentation.newActivity()生成activity(内部classLoader.loadClass().newInstance())


image.png

然后,调用activiyt的attach方法,里面生成PhoneWindow,绑定Instrumentation(每个activity都指向ActivityThread类中的Instrumentation变量),绑定WindowManager;接着调用activity的onCreate方法;


image.png

接下来进入handleResumeActivity()方法;首先调用activity的onResume方法;然后有一坨代码很关键!!

image.png

就是下面wm.addView()的方法,这是真正将view添加到window上面并且显示出来的方法。


image.png

添加view到window的时序图:然后后调用ViewRootImpl类里面的measue,layout.draw


image.png

大神:https://dev.qq.com/topic/5923ef85bdc9739041a4a798

http://blog.csdn.net/zy00000000001/article/details/53442878

先这样吧(等以后忘了,看看笔记能快速串联起来,要不然还要去看源码)

仅用于个人学习,所以写的简单粗暴

你可能感兴趣的:(ActivityThread)