“GONE”观点是否会对绩效产生不利影响?

时间:2013-07-26 14:09:29

标签: android layout android-view

我正在制作一款可以节省一些时间的应用 具有单个布局用于多个活动,其中一些视图根据正在使用的活动设置为GONE。

我知道在布局中包含大量视图会导致性能不佳。如果我有一个包含大量视图的活动,但这些视图的很大一部分是GONE,那么这个活动的表现仍然不佳。也就是说,设置为GONE的视图是否会导致性能恶化?如果是,他们是否需要比可见或不可见视图更少的处理能力?

谢谢!

2 个答案:

答案 0 :(得分:26)

你应该知道的第一件事就是看不见了:

  • View.GONE此视图不可见,并且不需要任何空间进行布局。
  • View.INVISIBLE此视图不可见,但仍会占用空间以进行布局。
  

考虑对测量的影响。   哪一个更有效率取决于你的频率   改变视图的可见性。

     

例如,如果视图在大多数情况下不可见,   使它GONE可能会更有效率,因为系统   不会毫无疑问地测量和布置你看不见的视图   每当它需要调整屏幕上的其他视图时。

     

另一方面,如果视图在可见和不可见之间变化   通常情况下,您可能会像INVISIBLE一样获得更好的表现   可能会避免每次转换的额外措施/布局。

答案 1 :(得分:12)

Here is an interesting answer。我想知道和你一样的问题,答案是View.GONE比简单地在视图上调用removeView(view)消耗更多的内存。但是,GONE视图消耗的内存少于View.VISIBLE,因为它们不需要绘制。

内存量比较如下:

View.VISIBLE> View.GONE> removing the view from the container

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