Android利用DDMS性能调优
2017-11-08 本文已影响32人
青楼爱小生
前言:在android功能都开发完毕后,可以开始考虑优化代码。但要怎么入手呢?首先我们应该解决明显的UI卡顿,其次可以考虑内存优化等等。当然因为鄙人能力有限,有不到之处还请各位大神指教。
1.UI卡顿
UI卡顿的问题,我们可以利用ddms的traceview功能查看。

第一次点击后,会弹出一个对话框,直接点击确定,使用默认的即可.然后在界面上操作一下认为耗时的地方,在点击一下带红点的按钮.在IDE中就会出现traceview的视图.
我们在

这一栏中找到CPU_time/call,点击后排序.里面找我们自己的函数,就能看到较耗时的操作,在进行优化.
PS:如果已经点击红点按钮,界面操作无响应的话,多半是哪个地方ANR了,我们可以adb pull data/anr/* d:/ 拷贝出traces.txt文件 从而定位哪个函数在主线程进行了耗时操作.
2.堆内存泄漏
内存泄漏用IDE可点开红框

若是没有视图窗口,则在IDE上方窗口选windows -->show view 里面找到heap
我们在heap界面,然后每五秒选择gauge GC 若是heap size稳定在一个数值则表示没有内存泄漏的风险,若是heap size在不停的增大,则我们需要考虑创建对象的地方哪还值得优化.可以百度 Android内存优化.
3.线程耗时

我们在设备列表中选中我们的包名,然后打开红框的线程.在右侧就能看到当前应用所有的线程,utime表示我们的线程执行耗时,重点关注这个即可.
4.UI嵌套

点开这个按钮需要手机有root权限,若是没有的话,可在手机开发者选项中,打开GPU过度绘制,如果界面中红色的区域较多,则这部分区域是我们需要优化的
5.cpu占比
我们可在上述右侧部位找到system info的窗口,点击update后,即可看我们的应用瞬时占用的cpu比例.
todo : 如何分析各个函数占用cpu的比重