美文网首页
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