您的位置:首页 > 移动开发 > Android开发

Android性能优化——TraceView的使用

2016-08-04 23:49 323 查看


最近开发的界面有个奇怪的现象,界面本身逻辑很简单。就是查询本地数据库,并以ListView展示。但是就这个简单的界面,却偶尔会出现需要等待两秒左右的时间才能显示列表,在性能比较底的手机上还会更久。怀疑是主线程的执行了耗时操作操作。因为在等待列表出现的过程中,界面无法响应触控操作。既然原因是主线程执行了耗时操作,那就需要找出具体是哪个方法做了耗时操作。Android已经为我们提供了分析工具——TraceView,运用这个工具我们可以测量一段时间内的哪个方法执行了耗时操作。如果对于TraceView还不是很了解,这里就不做详细介绍了。网上已经有很多介绍的博客了。具体的可以查看Trace官方文档,或者查看这篇博客正确使用Android性能分析工具——TraceView

(温馨提示:如果图太小看不清,chrome浏览器可以使用ctrl加鼠标滚轮放大网页查看)

开始测量

选中线程,开始测量





在手机做一些操作,然后停止测量(下图所示)



最后就会得到类似下面这样的测量结果



可以看到蓝色区域占了很长一段(下图所示)



点击蓝色区域后,下方列表会跳转到该蓝色区域对应的方法(如下图)



双击该方法,可以看到一个闪烁的动画,表示该方法所占用的时间段。可以看到非常长(如下图所示)



下面对各列做一个简要的介绍



现在已经可以看出,是在主线程做文件IO导致卡顿的。但是这里只是底层的方法,我们要追溯到我们所写的方法中去。通过不断的点击Parents中的方法就可以做到



最终我们跳转到了调用的方法



由上图可以看到,某一个Fragment的onSaveInstanceState中调用了CacheObject的putSerialObjList(),而这里面做的正是文件IO操作——对象序列化保存。

总结

可以看到,通过TraceView,我们可以轻松的找到耗时方法,从而对App性能进行优化。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android