AndroidX技术栈之应用性能优化
APP的优化方向
- 启动优化(系统层也可以做)
- 业务优化
- 体积优化
- 性能优化
- 布局优化
- 电量优化
- 网络优化(系统层也可以做)
- 内存优化(系统层也可以做)
APP启动概述
在Android 中把在Launch界面点击App图标(或快捷方式图标)到加载完成第一个Activity为止成为APP的启动,这是直观上的描述APP启动。在同一台手机上同一个APP两次启动一个APP所花的时间有可能不同,第一次会稍慢些第二次就比第一次稍快些,这是因为Android做了个巧妙的设计,把启动分为冷启动和热启动、首次启动(本质上也是冷启动)三大类:
冷启动
当启动应用时,系统后台没有该应用的进程(对应的内存空间),这时系统会重新创建一个新的进程分配给该应用,这个启动方式就是冷启动。冷启动因为系统会重新创建一个新的进程分配给它,所以会先创建和初始化 Application 类,再创建和初始化 Activity 类,最后加载Activity对应的布局并显示在界面上。
热启动
当启动应用时,后台已有该应用的进程(比如说按back键、home键,应用虽然会从前台退出,但是该应用的进程是依然会保留在后台,可进入任务列表查看),所以在已有进程的情况下,这种启动会从已有的进程中来启动应用,这个方式叫热启动。热启动因为会从已有的进程中来启动,所以热启动就不会走 Application 这步了,而是直接走 Activity,所以热启动的过程不会创建和初始化 Application,因为一个应用从新进程的创建到进程的销毁,Application 只会初始化一次。
首次启动(冷启动)
首次启动严格划分是冷启动中的一种特殊情况,之所以把首次启动单独列出来,一般来说,首次启动时间会比非首次启动要久,首次启动会做一些系统初始化工作,如缓存目录的生产,数据库的建立,SharedPreference的初始化,如果存在多 dex 和插件的情况下,首次启动会有一些特殊需要处理的逻辑,而且对启动速度有很大的影响,所以首次启动的速度非常重要,毕竟影响用户对 App 的第一映像。