冷启动优化
冷启动优化
traceview 检查耗时的方法
App 进程的创建等环节我们是无法主动控制的。开发人员唯一能做的就是减少在 Application 和第一个 Activity 中的工作量,从而缩短冷启动的时间。
Application 会执行多次,要只在主 app 的 Application 执行,加速启动
if (AppUtils. inMainProcess (getApplication ()))
Application
方案
- 避免在启动时做密集耗时的初始化
- 避免 I/O 操作、网络操作、布局嵌套等考虑异步
- 初始化三方组件,不阻塞主线程,比如:图片选择库、日志上传模块、统计、推送、语音库等等
- 使用 Activity 的 windowBackground 主题属性来为启动的 Activity 提供一个简单的 drawable,让用户产生一种速度加快的感觉。
热启动和冷启动
- 冷启动 :在启动应用前,系统还没有 App 的任何进程。冷启动流程就是 app 启动流程全过程,包括创建 app 进程、加载资源、启动主线程等等。这种启动耗时最长。
- 热启动 :app 进程处于后台,系统只是把它从后台带到前台,展示给用户。相比冷启动,热启动过程时间更短。但启动时,系统依然会展示一个空白背景,直到第一个 Activity 的内容呈现为止。
1 |
|
BoostMultiDex
Dex 压缩
当 Dex 非常多的时候会增加应用的安装时间,对于十个以上的 Dex,首次生成 ODEX 的时间可能就会达到分钟级别。
过多的 dex 文件编译会严重影响冷启动时间(解决方案 BoostMultiDex)
Android 低版本(4. X 及以下,SDK < 21)的设备,采用的 Java 运行环境是 Dalvik 虚拟机。它相比于高版本,最大的问题就是在安装或者升级更新之后,首次冷启动的耗时漫长。这常常需要花费几十秒甚至几分钟,用户不得不面对一片黑屏,熬过这段时间才能正常使用 APP。
BoostMultiDex是一个用于 Android 低版本设备(4. X 及以下,SDK < 21)快速加载多 DEX 的解决方案,由抖音/Tiktok Android 技术团队出品。
相比于 Android 官方原始 MultiDex 方案,它能够减少80%以上的黑屏等待时间,挽救低版本 Android 用户的升级安装体验。并且,不同于目前业界所有优化方案,BoostMultiDex 方案是从 Android Dalvik 虚拟机底层机制入手,从根本上解决了安装 APK 后首次执行 MultiDex 耗时过长问题。
冷启动优化
http://peiniwan.github.io/2024/04/72c07bee9cf7.html