很长一段时间我听说RelativeLayouts很慢。在几次会谈中,我记得听说这种类型的布局会两次调用onMeasure,由于某种原因,这会拖累性能。
但是,我正在参加表演课程,我观看了以下视频:
https://www.youtube.com/watch?time_continue=303&v=gK9tdeqqigE
此处,教师使用层次结构查看器工具,使用相对布局和嵌套线性布局比较同一视图组的渲染成本。
在视频中,相对布局是明显的赢家,这与我迄今为止所听到的有关该问题的所有内容相矛盾。
请您帮助我了解每种方法哪种情况更好?
谢谢
答案 0 :(得分:9)
这是一个非常广泛的问题,没有一个简单的答案。 LinearLayout通常比RelativeLayout更简单(因此更快),但是如果你将多个它们嵌套在彼此之内,则LinearLayout会出现问题,在同一轴上具有权重。然后它必须迭代地划分空间,这需要大量的布局通行证(它在那里很糟糕,并且有一个针对此的lint警告)。
即使你避免这种情况,那么使用嵌套的LinearLayouts与使用RelativeLayout相比,你仍然会有更深的视图层次结构,所以当LinearLayout更快时,它会在某些时候达到平衡。
所以它与所有事物的表现变得相同:绝对确定的唯一方法是衡量并看看会发生什么。