Android面试题之activity启动流程

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点

Launcher -> AMS

activity -> instrumentation -> AMS

AMS处理
Launcher应用启动新的应用

1、 启动activity,通过Binder机制,调用AMS启动新的Activity
2、 AMS会先回调Launcher(通过ActivityStack等跟activity栈有关的类)的ApplicationThread(Binder),然后走ActivityThread的pauseActivity相关的流程,最终调用到 Activity.performPause流程走pause生命周期
3、 走完pause后又回调到AMS的activityPaused方法,接着走ActivityStack的activityPausedLocked,然后是ActivityStackSupervisor,发现应用的进程还没有起来
4、 然后AMS发起创建应用进程的请求startProcess,走到zygote进程fork出新的应用进程,期间一通操作,最后会反射调用ActivityThread的main方法,在里面new一个ActivityThread,初始化Handler和Looper等
5、 在ActivityThread 的main方法里会调用attach方法,在里面会利用Binder通信,调用AMS的attachApplication
6、AMS后面又会调回到ActivityThread的handleBindApplication方法,这里主要是创建LoadedApk和ContextImpl,然后反射创建Instrumentation,接着调用LoadedApk的makeApplication方法,先初始化ClassLoader,然后创建ContextImpl,里面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值