响应速度优化的核心思想是避免在主线程中做耗时操作,但是有时候的确有很多耗时操作,怎么办呢?可以将这些耗时操作放在线程中去执行,即采用异步的方式执行耗时操作,响应速度过慢更多地体现在Activity的启动速度上,如果在主线程中做太多事情,会导致Activity启动时出现黑屏现象,甚至出现ANR,,Android规定,Activity如果5秒钟之内无法响应屏幕触摸时间或者键盘输入时间就会出现ANR,而BroadcasrReceiver如果10秒中之内还未执行完操作也会出现ANR,在实际开发中,ANR是很难在代码上发现的,如果在开发中遇到ANR,那么怎么定位问题呢,其实当一个进程发生ANR后,系统会在data/anr 目录下创建一个文件traces.txt,通过分析这个文件就能定位出ANR的原因,下面的代码是在Activity的onCreate中休眠30s,程序运行后持续点击屏幕,应用一定会出现ANR.
导出traces文件
trace文件一般是非常长的
网友评论