我正在制作一个应用程序,它可能会为我节省一些时间来为多个活动设置一个布局,其中一些视图设置为 GONE,具体取决于正在使用的活动。
我知道在布局中有大量视图会导致性能下降。如果我有一个有大量视图的活动,但这些视图中的很大一部分已经消失,那么这个活动是否仍然表现不佳。也就是说,设置为 GONE 的视图是否会导致性能恶化?如果是,它们是否需要比可见或不可见视图更少的处理能力?
谢谢!
我正在制作一个应用程序,它可能会为我节省一些时间来为多个活动设置一个布局,其中一些视图设置为 GONE,具体取决于正在使用的活动。
我知道在布局中有大量视图会导致性能下降。如果我有一个有大量视图的活动,但这些视图中的很大一部分已经消失,那么这个活动是否仍然表现不佳。也就是说,设置为 GONE 的视图是否会导致性能恶化?如果是,它们是否需要比可见或不可见视图更少的处理能力?
谢谢!
关于消失与隐形,你应该知道的第一件事:
考虑对测量的影响。哪个更有效取决于您更改视图可见性的频率。
例如,如果视图在大部分时间不可见,则将其设置为 GONE 可能会更有效,因为系统不会在需要调整屏幕上的其他视图时不必要地测量和布置您的不可见视图。
另一方面,如果视图在可见和不可见之间频繁变化,您可能会从 INVISIBLE 获得更好的性能,因为您可能会避免在每次转换时额外测量/布局。
这是一个有趣的答案。我想知道和你一样的事情,答案是比简单地调用视图View.GONE
消耗更多的内存。removeView(view)
但是,视图确实比不需要绘制的GONE
视图消耗更少的内存。View.VISIBLE
内存量比较如下:
View.VISIBLE
> View.GONE
>removing the view from the container
我所做的是View.GONE
在不消耗大量内存的parent.removeView(view)
视图(如 TextView)上使用,并在内存很大的视图(如 WebView)上使用;