美文网首页
ActivityThread

ActivityThread

作者: 1024HOPE | 来源:发表于2017-11-24 14:24 被阅读9次

    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

          本文链接:https://www.haomeiwen.com/subject/xsznvxtx.html