响应速度优化和ANR日志分析
快速响应的核心思想是,避免在主线程中,做耗时操作,可以将耗时操作放在子线程,因为在activity中,5s未响应屏幕触摸或者按键响应,就会出现ANR,而BroadCastReceiver如果在10s内没有处理完操作,也会ANR。所以ANR出现后,在代码中很难排查,但开发过程中,如果出现ANR,会在系统的/data/anr目录下,生成一个traces.txt文件。通过这个文件,我们可以分析出,具体原因。
下面我们通过两个简单例子,说明如何分析ANR
-
在onCreate方法中,休眠30s来模拟ANR:
注意:anr文件导出,这里书中描述方法为 adb pull /data/anr/traces.txt
但实际开发中,这部分会遇到无权限或者文件不存,如下:
我们可以通过abd bugreport+导出路径,这样会导出一个,已当前时间戳的压缩包,例如: