APP启动优化之启动流程

系统的启动流程

1.打开电源 引导芯片代码加载引导程序Boot Loader到RAM中去执行

2.BootLoader把操作系统拉起来

3.Linux 内核启动开始系统设置,找到一个init.rc文件启动初始化进程

4.init进程初始化和启动属性服务,之后开启Zygote进程

5.Zygote开始创建JVM并注册JNI方法,开启SystemServer

6.启动Binder线程池和SystemServiceManager,并启动各种服务

7.AMS启动Launcher

 

Launcher启动

1、我们可以通过adb命令查看APP的启动情况:

(1)通过adb shell dumpsys activity activities查看当前的activity名

(2)查看进程 adb shell ps

 

2、application的启动

(1)application的启动源于一个名为Launcher.java的类,该类的位于:

E:\tools\android-src\android-6.0.1_r1\packages\apps\Launcher2\src\com\android\launcher2\Launcher.java 

(2)当我们用手点击一个图标时,就到了这个类public final class Launcher extends Activity执行onClick(View view)方法,会把这个应用的相关信息传入先获取一个intent:

---》startActivitySafely(v, intent, tag) 
---》startActivity(v, intent, tag) 
---》startActivity(intent); 

(3)startActivity(intent)会开一个APP进程,启动流程如下图:

 

(4)ActivityThread.java做为入口,用attach开启app,再加载application和activity:

---》thread.attach(false)
---》mgr.attachApplication(mAppThread) 
会通过远端进程去回调private void handleBindApplication(AppBindData data) 
---》Application app = data.info.makeApplication(创建Application对象) 
---》mInstrumentation.callApplicationOnCreate(app) 
---》 app.onCreate();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值