Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 具有多个视图的大布局的性能。已删除的视图_Android_Performance_Android Layout_Layout - Fatal编程技术网

Android 具有多个视图的大布局的性能。已删除的视图

Android 具有多个视图的大布局的性能。已删除的视图,android,performance,android-layout,layout,Android,Performance,Android Layout,Layout,我创建了一个非常大的布局(大约2000行),其中包含大量视图和子布局,通常带有加权度量。这棵树非常复杂,可以下到8级或更多的嵌套级别。 为了创建不同的“透视图”,应用程序在应用程序生命周期的不同时刻以编程方式将某些视图的可见性设置为View.GONE,特别是那些位于视图树顶端的视图,我不想显示这些视图,有时还更改权重以调整视图大小;因此,显示给用户的最终布局每次包含主布局中不超过1/3的视图和视图树 我不在乎“切换”时的性能,所以当用户从一个角度切换到另一个角度时,我有足够的时间打开和关闭可见性

我创建了一个非常大的布局(大约2000行),其中包含大量视图和子布局,通常带有加权度量。这棵树非常复杂,可以下到8级或更多的嵌套级别。 为了创建不同的“透视图”,应用程序在应用程序生命周期的不同时刻以编程方式将某些视图的可见性设置为View.GONE,特别是那些位于视图树顶端的视图,我不想显示这些视图,有时还更改权重以调整视图大小;因此,显示给用户的最终布局每次包含主布局中不超过1/3的视图和视图树

我不在乎“切换”时的性能,所以当用户从一个角度切换到另一个角度时,我有足够的时间打开和关闭可见性,这不是问题


相反,将这么多视图和视图树设置为view.GONE是否会影响运行时的性能?与显示所有视图的较小布局(可能以编程方式膨胀)相比,消失的视图对CPU和内存性能有何影响?

实际上,在创建复杂布局时,必须使用约束布局

ConstraintLayout允许使用平面视图层次(无嵌套视图组)创建大型复杂布局。它类似于RelativeLayout,因为所有视图都是根据同级视图和父布局之间的关系进行布局的,但它比RelativeLayout更灵活,更易于与Android Studio的布局编辑器一起使用

请从url中查找文档:


它会影响性能,特别是低规格设备。若你们必须像你们说的那个样创建重布局,那个么使用约束布局。相对布局更灵活。约束布局可以稍微改进,但我认为真正的问题可能是视图树的父级设置为“消失”:它们是如何处理的,像死对象一样,还是仍然“活着”?我认为“消失”的布局仍然会影响。你不能为此制作不同的片段吗?是的,正如我对Divyesh Patel所说的,这是一个很好的建议,但真正的问题可能是将父视图树设置为“已消失”的视图树:它们是如何处理的,像死的对象一样,还是仍然“活着”?是否可以在您的需求中使不可见而不是消失?否,因为可见视图取代了消失的视图。例如,在某些情况下,可能有4个视图组织在一个十字中,其他情况下,6个视图组织为带有权重的水平布局,例如:6个视图为布局权重为6。如果你想去做,把布局权重为零。我认为这将是有益的内部警员布局必须使用的重量。那会更好。