一、检查app初始化时间的原因
1、在application的onCreate()方法中,我们一般会直接初始化第三方的SDK,导致App启动较慢; 2、在Activity中onCreate() 中初始化时间过长,导致app加载缓慢的现象;
二、配置的位置
File file = new File(Environment.getExternalStorageState(), "AppTrace.trace");
Debug.startMethodTracing(file.getAbsolutePath());
//此处是我们初始化的代码;比如在application的onCreate()方法中,我们一般会直接初始化第三方的SDK, 导致App启动较慢。
//...
//...
//...
Debug.stopMethodTracing();
代码写好以后, 重新运行app项目。
三、出现的异常问题
然后我们期待AppTrace.trace文件并没有生成(我这边是这样的);
结果是这样子的:
Caused by: java.lang.RuntimeException: Unable to open trace file '/mounted/AppTrace.trace' at dalvik.system.VMDebug.startMethodTracingFilename(Native Method) at dalvik.system.VMDebug.startMethodTracing(VMDebug.java:171)
结合网上资料:https://blog.csdn.net/cshichao/article/details/78425531
四、异常的解决
改为:
File file = getExternalFilesDir(null);
Debug.startMethodTracing(file + "AppTrace.trace");
Debug.startMethodTracing(file.getAbsolutePath());
//...
//...
//...
Debug.stopMethodTracing();
再次运行,问题解除。我们可Android Studio右下侧Device File Explorer中查看,如下图:
我们要的文件生成了。接下来我们需要将文件导出;
五、导出生成的.tract文件
在Android Studio的Terminal中(或控制台cd到项目根目录)执行:adb pull 生成的文件路径;
注意,前提是在环境变量中已经配置来adb;
adb pull /mnt/sdcard/Android/data/xxx/filesZhaoAppTrace.trace
然后在项目的根目录生成filesZhaoAppTrace.trace文件;
六、使用.tract文件来分析具体代码的消耗时间
将生成的.trace文件拖入到Android Studio工具中即可;如下图:
这里可以看到具体的模块所消耗的时间。
接下来就是具体如何优化代码了;
优化在这里就不讲啦。但提一点,将不对UI进行操作的初始化,可以放到线程中去执行,是有效避免启动耗时的方案之一。