一 如何对android应用进行内存性能分析?
在使用App时会发现有些界面启动卡顿、动画不流畅、列表等滑动时也会卡顿出现这种情况,可以考虑对UI性能分析。首先要清楚卡顿的原因,有以下几种情况:
- 人为在UI线程中做轻微耗时操作,导致UI线程卡顿;
- 布局Layout过于复杂,无法在16ms内完成渲染;
- 同一时间动画执行的次数过多,导致CPU或GPU负载过重;
- View过度绘制,导致某些像素在同一帧时间内被绘制多次,从而使CPU或GPU负载过重;
- View频繁的触发measure、layout,导致measure、layout累计耗时过多及整个View频繁的重新渲染;
- 内存频繁触发GC过多(同一帧中频繁创建内存),导致暂时阻塞渲染操作;
- 冗余资源及逻辑等导致加载和执行缓慢;
- 臭名昭著的ANR;
二 如何分析UI性能?
在android的sdk中提供了HierarchyViewer工具,我们可以通过HierarchyViewer来进行UI布局复杂程度及冗余等分析,启动方式:
第一种:
- 打开terminal ,使用cd进入到sdk的tools目录,如下我的:
$ cd /Users/xxx/programFiles/android-sdk-macosx/tools
- 然后输入启动HierarchyViewer
$ hierarchyviewer
当然你也可以直接手动进入到sdk的tools目录,找到HierarchyViewer工具,双击HierarchyViewer就可以启动了。
第二种(推荐):
- 打开开发工具的ADM添加HierarchyViewer工具如下:
一个Activity的View树,通过这个树可以分析出View嵌套的冗余层级,以及每个View在绘制的使用时长也有表示。
三 使用Android Lint进行资源及冗余UI布局等优化
就是将鼠标放在代码区点击右键->Analyze->Inspect Code–>界面选择你要检测的模块->点击确认开始检测,等待一下后会发现如下结果:
参考:
https://blog.csdn.net/mwq384807683/article/details/70313741
https://blog.csdn.net/swordgirl2011/article/details/52887925