启动流程
1 | 1.点击桌面图标,Launcher进程采用Binder IPC向system_server进程发起startActivity请求 |
冷启动
- 什么是冷启动
1 | 1.冷启动定义 |
CPU Profile的使用
Traceview是android平台配备一个很好的性能分析的工具。它可以通过图形化的方式让我们了解我们要跟踪的程序的性能,并且能具体到每个方法的执行时间。但是目前Traceview 已弃用。如果使用 Android Studio3.2 或更高版本,则应改为使用 CPU Profiler
类型 | 作用 |
---|---|
Call Chart | 根据时间线查看调用栈,便于观察每次调用是何时发生的 |
Flame Chart | 根据耗时百分比查看调用栈,便于发现总耗时很长的调用链 |
Top Down Tree | 查看记录数据中所有方法调用栈,便于观察其中每一步所消耗的精确时间 |
Bottom Up Tree | 便于观察耗时方法如何被调用的 |
CPU Profiler需要使用在8.0及以上版本,那么其他版本的呢?我们可以借助Debug API生成trace文件。
1 | public class MyApplication extends Application{ |
运行App,则会在sdcard中生成一个enjoy.trace文件(需要sdcard读写权限)。将手机中的trace文件保存至电脑,随后拖入Android Studio即可。
冷启动的优化
根据上面冷启动的概念,我们可以知道,其实优化冷启动的工作主要得在Application和MainActivity里面。
1 | 1.减少onCreate()方法的工作量 |
StrictMode
StrictMode常用于捕捉应用程序主线程上的意外磁盘或网络访问。帮助我们让磁盘和网络操作远离主线程,可以使应用程序更加平滑、响应更快。
1 | //开发测试过程中开启,正式上线需要关闭 |
启动黑白屏问题
不管怎样,app的启动总会需要时间,而这段时间又不能什么也没有反应,所以goole在这段时间会显示一个黑(白)屏,具体是黑屏还是白屏根据我们的主题AppTheme而定,那么解决这个黑白屏问题(让用户体验更好)呢?可以在这段时间展示我们的一张图片。
1 | 1.自定义主题 |