Android中对已可见View重复调用setVisibility设为Visible有什么影响?
重复调用相同参数的setVisibility方法的开销与影响
直接重复调用setVisibility传入相同可见性参数几乎不会产生可感知的额外开销,不需要在业务代码中手动提前判断当前可见性状态。
- Android官方
View类的setVisibility方法原生自带新旧值校验逻辑:方法执行的第一步就会对比传入的目标可见性和View当前的可见性值,二者完全一致时会直接返回,不会触发后续的布局重算、视图重绘等耗时逻辑。 - 仅有的额外开销只有单次方法调用、一次int值比对的成本,这部分消耗在常规业务开发场景下可以完全忽略,反而手动在业务代码中新增判断会增加不必要的代码维护成本。
只有极端场景下需要注意:如果你在每帧执行的绘制循环中连续调用数十万次该方法,才有可能累计出可感知的性能损耗,正常的业务调用场景完全不需要考虑该问题。
如果是自定义View重写了setVisibility方法,只要你没有删掉父类原有判断逻辑、没有省略super.setVisibility()调用,也不会产生额外开销。
内容的提问来源于stack exchange,提问作者Kursad
相关产品推荐
相关产品推荐

