我正在制作一款可以节省一些时间的应用 具有单个布局用于多个活动,其中一些视图根据正在使用的活动设置为GONE。
我知道在布局中包含大量视图会导致性能不佳。如果我有一个包含大量视图的活动,但这些视图的很大一部分是GONE,那么这个活动的表现仍然不佳。也就是说,设置为GONE的视图是否会导致性能恶化?如果是,他们是否需要比可见或不可见视图更少的处理能力?
谢谢!
答案 0 :(得分:26)
你应该知道的第一件事就是看不见了:
考虑对测量的影响。 哪一个更有效率取决于你的频率 改变视图的可见性。
例如,如果视图在大多数情况下不可见, 使它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);