Android性能优化——TraceView的使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lylwo317/article/details/52124248


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


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


开始测量

选中线程,开始测量




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




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




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




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




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




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




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




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




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


总结

可以看到,通过TraceView,我们可以轻松的找到耗时方法,从而对App性能进行优化。


猜你喜欢

转载自blog.csdn.net/lylwo317/article/details/52124248