Linux内核启动init进程,init进程中会启动Zygote进程及ContextManager进程,Zygote进程中会启动SystemServer进程,ServiceServer进程中会创建ActivityManagerService服务并启动该服务,AMS服务会被注册到ContextManager进程中的服务列表中,这样它才可以对外提供服务。当有Activity启动的请求发出时,系统会向ContextManager检索出AMS并调用AMS的startActivity()方法,通过一系列的准备操作后,调用getProcessRecordLocked()方法检索目标进程是否存在,不存在则调用Process.start()方法来创建目标进程,将ActivityThread类加载到进程中,而后调用ActivityThread类的main()方法。在main()方法中创建ActivityThread类型对象at,创建过程中会以new的方式创建ApplicationThread类型对象mAppThread,at创建完成后调用at.attach()方法,该方法中获取AMS对象mgr,接着调用mgr.attachApplication(mAppThread),该方法又调用mAppThread.secheduleLaunchActivity()方法,通过向Handler发送消息方式切换到主线程中调用at.handLaunchActivity()方法,该方法中调用performLaunchActivity()方法,这个方法中会通过类加载的方式创建Activity对象并调用onCreate()方法。
Activity启动摘要
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 我们每一位做家长的,大都希望孩子能在学校好好学习,回家后也是竭尽全力帮助孩子在学习上取得好成绩。 不少家长亲自上阵...
- Activity的工作原理-android9.0 startActivityForResult 方法当开启一个页面...
- 本文中的部分内容分析的是旧版本的代码,与Android 9.0有所出入,所以写了一篇完整的9.0应用启动流程分析,...