美文网首页
Android系统&Activity(app)的启动流程

Android系统&Activity(app)的启动流程

作者: 细雨蒙情 | 来源:发表于2018-06-16 19:49 被阅读16次

    一、Android系统的启动流程

    init进程解析init.rc,先启动ServiceManager进程,然后启动Zygote进程,Zygote启动SystemServer进程,SystemServer中开启Android系统各项关键服务(AMS,WMS)。
    https://blog.csdn.net/yangwen123/article/details/9029959
    https://blog.csdn.net/itachi85/article/details/56669808

    二、Actiivity的启动流程

    APP与AMS通信.png
    1、无论是通过点击桌面图标还是调用startActivity()方法启动Activity最终调用Activity的startActivityForResult(),然后调用Instrumentation的execStartActivity(),最终调用ActivityManagerProxy的startActivity()
    2、ActivityManagerProxy是AMS在App进程的代理,调用AMS的startActivity(),在该过程会使前台处于Resume状态的Activity变成Pause状态,判断系统中是否存在该进程,不存在通过socket 通知Zygote fork一个新的进程,然后调用Activity的main方法,这个过程中AMS会与ApplicationThreadProxy绑定,然后IPC回调ApplicationThread的bindApplication,发送消息给handler,反射拿到Application对象之后,依次调用attach(),onCreate。
    3、如果Appliction已经存在则跳过创建Application的过程,调用ActivityThread中的handleLaunchActivity()反射实例话Activity实例,依次调用attach、onCreate、onStart 、onSaveInstance,onResume等方法。
    https://www.jianshu.com/p/6037f6fda285
    https://www.jianshu.com/p/9ecea420eb52
    https://blog.csdn.net/tellh/article/details/57418651
    https://blog.csdn.net/Gaugamela/article/details/53067769

    相关文章

      网友评论

          本文标题:Android系统&Activity(app)的启动流程

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