我应该在一个单独的线程中处理大量的视图负载吗?



当加载Fragment时,视图(100+)的负载很大,如

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);

我们应该把这些赋值处理成一个单独的Thread吗?

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

不,不要那样做。因为你没有操纵视图层次结构,你可能不会得到一个立即的错误/异常,但android UI工具包通常不是线程安全的,所以你不知道会发生什么,如果视图层次结构改变(在UI线程),而你正在运行你的findViewById(在另一个线程)。此外,为了实际使用任何视图变量,你必须从UI线程同步一些东西。我看不出这样做有任何理由或好处。

来自官方文档:

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

…不要从UI线程之外访问Android UI工具包。

我还想指出,findViewById()实际上并没有"加载"该视图,因为它查找它,所以没有膨胀。如果您担心性能,请在膨胀视图时多担心,而不是在使用findViewById查找它们时。

最新更新