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