Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.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
Java 我应该在单独的线程中处理大量视图吗?_Java_Android_View - Fatal编程技术网

Java 我应该在单独的线程中处理大量视图吗?

Java 我应该在单独的线程中处理大量视图吗?,java,android,view,Java,Android,View,加载带有大量视图(100+)的片段时,如 我们是否应该将这些任务处理成一个单独的线程 请注意:RelativeLayout只是一个例子。它可以是任何类型的视图不,不要这样做。由于您没有操作视图层次结构,因此可能不会立即出现错误/异常,但android UI toolkit通常不是线程安全的,因此您不知道在运行findViewById(在另一个线程上)时,如果视图层次结构发生更改(在UI线程上),会发生什么情况。此外,为了实际使用任何视图变量,您必须从UI线程同步某些内容。我看不出这样做有什么理由

加载带有大量视图(100+)的
片段时,如

我们是否应该将这些任务处理成一个单独的
线程


请注意:
RelativeLayout
只是一个例子。它可以是任何类型的
视图

不,不要这样做。由于您没有操作视图层次结构,因此可能不会立即出现错误/异常,但android UI toolkit通常不是线程安全的,因此您不知道在运行findViewById(在另一个线程上)时,如果视图层次结构发生更改(在UI线程上),会发生什么情况。此外,为了实际使用任何视图变量,您必须从UI线程同步某些内容。我看不出这样做有什么理由或好处

官员说:

此外,Android UI工具包不是线程安全的。

不要从UI线程外部访问Android UI工具包


我还想指出,findViewById()实际上并没有“加载”该视图,因为它只是查找它,所以不会发生膨胀。如果您担心性能,在膨胀视图时,而不是在使用findViewById查找视图时,会非常担心。

更好的解决方案是在一个片段中不使用100多个视图。这往往表明,当您在一个片段中获得100个视图并使用所有视图时,可能会出现问题。实际上,我不必同时使用所有视图。我知道这可能会导致一种不好的做法,然而,客户端希望在Android上运行iOS。这就是为什么。
layout_settings_1 = (RelativeLayout) rootView.findViewById(R.id.layout_settings_1);
layout_settings_2 = (RelativeLayout) rootView.findViewById(R.id.layout_settings_2);

.
.
.

layout_settings_n = (RelativeLayout) rootView.findViewById(R.id.layout_settings_n);