启动流程
启动状态
应用有三种启动状态,每种状态都会影响应用向用户显示所需的时间:冷启动、温启动与热启动。。
- 冷启动:
冷启动是指应用从头开始启动:系统进程在冷启动后才创建应用进程。发生冷启动的情况包括应用自设备
启动后或系统终止应用后首次启动。 - 热启动:
在热启动中,系统的所有工作就是将 Activity 带到前台。只要应用的所有 Activity 仍驻留在内存中,
应用就不必重复执行对象初始化、布局加载和绘制。 - 温启动:
温启动包含了在冷启动期间发生的部分操作;同时,它的开销要比热启动高。有许多潜在状态可视为温启动。例如:
• 用户在退出应用后又重新启动应用。进程可能未被销毁,继续运行,但应用需要执行 onCreate() 从头开始重新创建 Activity。
• 系统将应用从内存中释放,然后用户又重新启动它。进程和 Activity 需要重启,但传递到
onCreate() 的已保存的实例savedInstanceState对于完成此任务有一定助益。
• …
启动耗时统计
启动耗时统计
adb 命令启动应用,一般会输入三个值:ThisTime、TotalTime与WaitTime。
• WaitTime:包括前一个应用Activity pause的时间和新应用启动的时间;
• ThisTime:表示一连串启动Activity的最后一个Activity的启动耗时;
• TotalTime:表示新应用启动的耗时,包括新进程的启动和Activity的启动,但不包括前一个应用Activity pause的耗时。
StrictMode
StrictMode是一个开发人员工具,它可以检测出我们可能无意中做的事情,并将它们提请我们注意,以便我们能够修复它们。
StrictMode最常用于捕获应用程序主线程上的意外磁盘或网络访问。帮助我们让磁盘和网络操作远离主线程,可以使应用程序更加平滑、响应更快。
启动优化相关
1). 合理的使用异步初始化、延迟初始化、懒加载机制。
2). 启动过程避免耗时操作,如数据库 I/O操作不要放在主线程执行。
3). 类加载优化:提前异步执行类加载。
4). 合理使用IdleHandler进行延迟初始化。
5). 简化布局
…
代码