![10018045-3a1d916e0af2d37b.jpg](https://upload-images.jianshu.io/upload_images/10018045-3a1d916e0af2d37b.jpg)
1.前言
-
冷热启动
是体现Android性能主要部分之一。 - 本文主要通过(主题、冷、热)三个方向,分析与优化启动过程的性能。
- 应用的启动速度,是用户第一体验视角,同时也是反应现今用户对应用效能的要求。
- 文章中实例 linhaojian的Github
2.主题黑 / 白屏
2.1 定义
- 指Android中Theme的背景颜色;
2.2 分析
-
在Android应用启动时,界面初始化结构如下图:
Activity界面结构.png - 从上图,可以发现初始化顺序:Activity --> PhoneWindow --> DecorView --> ContentView,说明在setContentView前,系统会先展示Window与Theme背景再加载ContentView并显示,所以导致视觉效果是先看到Theme的背景再看到ContentView。
2.3 优化
- 优化方式:
- 修改Theme的背景为图片的形式;
- 设置Theme的为透明;
<style name="Theme.Splash" parent="AppTheme">
<item name="windowNoTitle">true</item>
<!-- 背景 -->
<!--<item name="android:windowBackground">@drawable/splash_pic</item>-->
<!-- 透明 -->
<item name="windowIsTranslucent">true</item>
</style>
3.冷启动
3.1 定义
- 启动应用 & 系统为此应用创建进程。
3.2 分析
- 热启动经历的生命周期:
- Application : attachBaseContext --》onCreate;
- Activity : attachBaseContext --》onCreate --》onStart --》onResume --》onAttachedToWindow --》onWindowFocusChanged
3.3 优化
- 1.在对应的生命周期流程中尽量减少主线程中耗时任务。
- 2.布局尽量少嵌套,多使用ConstraintLayout。
- 3.Application初始化其他第三方库的问题。如果应用中包含多个子进程的时候,Application的onCreate函数会被调用多次,应该通过进程ID判断按需初始化第三方库,减少重复初始化的问题。
4.热启动
4.1 定义
- 启动应用 & 应用进程已存在(例如back、home处于后台的操作)。
4.2 分析
- 热启动经历的生命周期:onRestart --》onResume --》onWindowFocusChanged();
4.3 优化
- 1.在对应的生命周期流程中尽量减少主线程中耗时任务。
4.总结
- 到此,
冷热启动
介绍完毕。 - 如果喜欢我的分享,可以点击 关注 或者 赞,你们支持是我分享的最大动力 。
- linhaojian的Github
欢迎关注linhaojian_CSDN博客或者linhaojian_简书!
不定期分享关于安卓开发的干货。
写技术文章初心
- 技术知识积累
- 技术知识巩固
- 技术知识分享
- 技术知识交流