Daily Archive: 2016-07-13

Android Performance: Nested Hierarchies

  如果View进行了过多的嵌套,具有较深的层级关系,也会影响性能。下面例子使用Hierarchy Viewer比较了不同层级对性能的影响,Hierarchy Viewer能够可视化地显示布局中View的层级关系,用来对UI进行Debug和优化。代码可以在这里找到,运行后点击“COMPARE LAYOUTS”按钮,界面如图1所示。 其中包含了两个看似完全一样的布局,具体定义在activity_co…
Read more

Android Performance: clipRect和quickReject

  Android Framework会通过裁剪(Clipping)的方式避免重绘不可见的元素,以此来优化性能。但这一优化对于一些复杂的自定义View无效,如果自定义View重写了onDraw(),系统无法知道View中各个元素的位置和层级关系,也就无法自动省略绘制不可见的元素。Canvas提供了一些特殊的方法,可以用来向Android Framework告知Canvas的哪些部分不可见、不需要绘…
Read more

Android Performance: Overdraw的定位

  Android Performance系列的内容整理自Udacity的Android Performance课程,是对该系列课程的笔记和总结。   过度绘制(Overdraw)指的是一个像素在一帧里被绘制了多次,旧的绘制会被新的绘制覆盖,是无效的,造成对GPU的浪费。Overdraw通常发生于多个元素重合的情况,位于上层的元素会覆盖住下层的元素,使下层的元素不可见,此时如果还对下层元素进行绘制…
Read more