代码不优化
在构建App时,我们经常需要引用一些第三方的sdk,而项目业务越多,引用的第三方也越多,有些第三方会要求我们在Application的onCreate方法中对其初始化。这意味着:在application的onCreate方法中执行时间会被越长,首个Activity布局的渲染时间也会相应的拉长。
同理,如果我们在Activity的onCreate, onStart,onResume方法中执行的任务时间过长,同样也会导致布局被渲染的时间拉长。这样直接导致的问题就是,用户会感觉页面迟迟没有加载出来,用户体验极差。
测量启动时间
在Android4.4及更高的版本中。logcat包括一个输出行,其中包含命名为
Displayed的值,此值代表从启动进程到在屏幕上完成对应 Activity 绘制所经
通过adb命令
adb shell am start -W com.xykaye/.MainActivity
// 运行结果
ThisTime:最后一个Activity启动时间
TotalTime:一系列Activity启动时间
WaitTime:总启动时间,包含系统在冷启动时,需要加载app信息到内存的时间
手动打印检测
public void onCreate(){
super.onCreate();
File file = new File(Environment.getExternalStorageDirectory(),"app.trace");
Debug.startMethodTracing(file.getAbsolutePath());
// 其他业务逻辑代码
init();
test();
Debug.stopMethodTracing();
}
// 获取trace文件命令
adb pull /storage/emulated/0/app.trace
手动打印日志计算启动时间,只能记录应用内耗时
优化目标 减少代码执行时间:
- 采用异步线程的方式来进行处理
1.异步线程中使用的api不能创建handler
2.不能有UI操作
3.对异步要求不高 - 延时初始化
- 懒加载
-
空闲时初始化
test.png
网友评论