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

pub*_*oid 37 layout android android-view

我正在创建一个应用程序,它可以节省我一些时间来为几个活动设置单个布局,其中一些视图根据正在使用的活动设置为GONE.

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

谢谢!

MSA*_*MSA 27

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

  • View.GONE此视图不可见,并且不需要任何空间用于布局.
  • View.INVISIBLE此视图不可见,但它仍占用布局空间.

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

例如,如果视图在大多数情况下不可见,那么将其视为GONE可能会更有效,因为系统不会在需要调整屏幕上的其他视图时不必要地测量和布置您的不可见视图.

另一方面,如果视图经常在可见和不可见之间发生变化,您可能会从INVISIBLE中获得更好的性能,因为您可能会在每次转换时避免额外的度量/布局.


ant*_*ycr 14

这是一个有趣的答案.我想知道和你一样的事情,答案是View.GONE消耗更多的内存而不是简单地调用removeView(view)视图.但是,GONE视图确实消耗的内存少于View.VISIBLE不需要绘制的内存.

内存量比较如下:

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

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