在性能方面,哪个更好:foo.setVisibility(View.GONE)或parent.removeView(foo)?

时间:2017-06-13 05:54:00

标签: java android performance

我一直在搜索有关此问题的相关论坛但尚未详细说明这些组合方法中的哪一个foo.setVisibility(View.VISIBLE) + foo.setVisibility(View.GONE) 并且parent.addView(foo) + parent.removeView(foo)效果或能耗方面更胜一筹......

5 个答案:

答案 0 :(得分:2)

如果您想频繁地展示/隐藏,

foo.setVisibility(View.VISIBLE) + foo.setVisibility(View.GONE)优先于parent.addView(foo) + parent.removeView(foo)

答案 1 :(得分:1)

这取决于您的实施。但在大多数情况下,这并不重要。

您的自定义View可能有一个巨大的'使用时间/处理器消耗的计算重载构造函数或某些方法。

尽管如此,如果是普通视图(例如,TextView),它确实无关紧要。

如果可见性状态等于消失,则不使用此视图的方法。布局渲染时忽略此视图。

答案 2 :(得分:1)

对不占用大量内存的视图(如TextView)使用View.GONE,对大量内存(如WebView)的视图使用parent.removeView(view)

答案 3 :(得分:0)

测量不可见的视图但未绘制。没有衡量过去的观点。所以性能略有不同。

答案 4 :(得分:0)

与添加和删除视图相比,VISIBLE和GONE更好。

1)像其他人所说的那样,它确实比实际删除和添加视图具有更好的性能

但根据我的下一点更重要

2)即使在视图上执行了GONE,你仍然可以使用View(getText或setText)等对视图执行很多操作,但如果删除并添加视图,则View本身不存在,阻止你做任何事情