我们由手机开机开始来一步步走一下app启动的流程
1.开机 手机会有一个BootLoader到RAM中执行
2.BootLoader 拉起系统
3.Linux内核会启动 Kennel会加载init.c文件
4.init初始化和启动系统属性服务,开启Zygote(孵化器)进程
5.Zygote开启创建JVM注册JNI方法,开启SystemService
6.启动Binder线程池和SystemServiceManager开启各种服务
7.Ams启动launcher
1.源码查看
查看源码 android-8.0.0_r1\packages\apps\Launcher2\src\com\android\launcher2
intent—>startActivitySafely(v, intent, tag)–》startActivity(v, intent, tag);–>startActivity(intent);
会开一个进程
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();
2.优化位置
对我应用层的安卓开发工程师,我们没有办法修改系统和launcher的代码进行优化,所谓我们能下手的地方只有在Application 的oncreat()到Activity的oncreat之间进行优化
白屏 <style name="AppTheme" parent="Theme.AppCompat.Light">
黑屏 <style name="AppTheme">(在以前的老版本上有效,现在的版本默认使用透明处理了)
找到一个父类name="Platform.AppCompat.Light"中定义了
<item name="android:windowBackground">用来控制黑白屏
解决办法:
1.在自己的