Android性能优化之TraceView和Lint使用详解

冲天香阵透长安,满城尽带黄金甲。这篇文章主要讲述Android性能优化之TraceView和Lint使用详解相关的知识,希望能为你提供帮助。
android lint工具是Android studio中集成的一个代码提示工具, 它主要负责对你的代码进行优化提示, 包括xml和java文件, 很强大。编写完代码及时进行lint测试, 会让我们的代码变得非常规范而且避免代码冗余。让我们及时发现代码中隐藏的问题。
【Android性能优化之TraceView和Lint使用详解】lint的使用时非常简单的, 我看可以用它实现代码布局的优化, Java代码的优化, 不过我觉得根本解决问题还是得依赖于开发者的素质。

例子: 我们需要删除掉一些无用的变量和布局文件等, 这对代码的冗余有很大的帮助。

Android性能优化之TraceView和Lint使用详解

文章图片


Android性能优化之TraceView和Lint使用详解

文章图片


Android性能优化之TraceView和Lint使用详解

文章图片


代码提示我们在6行需要为ImageView添加ContentDescription属性, 突然感觉好强大。
其实我们还可以用它自定义搜索, 主要是删除一些无用的文件用的。
Android性能优化之TraceView和Lint使用详解

文章图片


Android性能优化之TraceView和Lint使用详解

文章图片


Android性能优化之TraceView和Lint使用详解

文章图片


然后按要求优化下代码就好了。
TraceView

TraveView是Android studio集成的一个性能优化工具, 相信很多人都用过它, 之前也专门讲过, 它主要计算工程内方法运行所占用的时间, 调用次数, 以此来优化App运行效率。


使用TraceView主要有两种方式:
  1. 最简单的方式就是直接打开DDMS, 选择一个进程, 然后按上面的“Start Method Profiling”按钮, 等红色小点变成黑色以后就表示TraceView已经开始工作了。然后我就可以滑动一下列表( 现在手机上的操作肯定会很卡, 因为Android系统在检测Dalvik虚拟机中每个Java方法的调用, 这是我猜测的) 。操作最好不要超过5s, 因为最好是进行小范围的性能测试。然后再按一下刚才按的按钮, 等一会就会出现上面这幅图, 然后就可以开始分析了。
  2. 第2种方式就是使用android.os.Debug.startMethodTracing(); android.os.Debug.stopMethodTracing(); 方法, 当运行了这段代码的时候, 就会有一个trace文件在/sdcard目录中生成, 也可以调用startMethodTracing(String traceName) 设置trace文件的文件名, 最后你可以使用adb pull /sdcard/test.trace /tmp 命令将trace文件复制到你的电脑中, 然后用DDMS工具打开就会出现第一幅图了



Android性能优化之TraceView和Lint使用详解

文章图片


步骤: 1.选择你要调试的进程。
2.点击start mothod profiling, 待图标变黑。
3.选择sample base profiling, 等待一会, 然后再次点击这个按钮停止( 开始的时候红点会变成灰色小方块, 停止的时候再次点击这个按钮就好了)
注意事项: 在第三步的时候, 需要选择监听的属性。

Trace base profiling
整体监听, 项目中所有方法都会监听, 资源消耗比较大。
sample base profiling
抽样监听, 以指定的频率进行抽样调查, 一般不要超过5s, 需要较长时间获取准确的样本数据。
再次点击start mothod profiling, 就会生成检测样本。
Android性能优化之TraceView和Lint使用详解

文章图片

整个界面包括上下两部分, 上面是你测试的进程中每个线程的执行情况, 每个线程占一行; 下面是每个方法执行的各个指标的值。

上面一部分是你测试进程的中每个线程运行的时间线, 下图中可以可以看到, 主要只有一个main线程在执行。


下面是分析面板(Profile Panel) - 每一列内容
Inclusive time - 函数本身运行花费时间 + 函数调用其他函数时间
Exclusive time - 函数本身运行花费时间。
Calls + RecurCall/Total 调用 + 重复调用次数 / 函数总调用次数
Cpu Time/Call 总的Cpu时间与总的调用次数之比

Android性能优化之TraceView和Lint使用详解

文章图片


Profile Panel面板有一些参数需要注意下


列名描述
Name该线程运行过程中所调用的函数名
Incl Cpu Time某函数占用的CPU时间, 包含内部调用其它函数的CPU时间
Excl Cpu Time某函数占用的CPU时间, 但不含内部调用其它函数所占用的CPU时间
Incl Real Time某函数运行的真实时间( 以毫秒为单位) , 内含调用其它函数所占用的真实时间
Excl Real Time某函数运行的真实时间( 以毫秒为单位) , 不含调用其它函数所占用的真实时间
Call+ Recur Calls/Total某函数被调用次数以及递归调用占总调用次数的百分比
Cpu Time/Call某函数调用CPU时间与调用次数的比。相当于该函数平均执行时间
Real Time/Call同CPU Time/Call类似, 只不过统计单位换成了真实时间


1. Incl Cpu Time
define inclusive : 全包括的
上图中可以看到0( toplevel) 的Incl Cpu Time 占了100%的时间, 这个不是说100%的时间都是它在执行, 请看下面代码:

    推荐阅读