Android - 资源解析如何影响构建性能?

Android - How do Resource resolution impacts build performance?

我参与的项目有一些资源,例如:

<!-- Spacing -->
<dimen name="spacing_1">4dp</dimen>
<dimen name="spacing_2">16dp</dimen>
<dimen name="spacing_3">20dp</dimen>
<dimen name="spacing_4">32dp</dimen>
<dimen name="spacing_5">45dp</dimen>

构建时间受资源解析的影响有多少,以便我的所有视图都可以:

    <LinearLayout 
    ...
        android:layout_margin="@dimen/spacing_2" />

在每个文件中与简单地:

    <LinearLayout 
    ...
        android:layout_margin="16dp" />

我不能肯定地说,但我猜,资源只会被访问一次,然后缓存起来以备将来使用。

即使不是这种情况,除非您的观看次数达到一百万,否则影响也不会很明显。

在你学习的官方 Android 开发者教程中,你应该创建资源而不是直接分配。(在构建时间方面没有提到,他们更关注收益,你可以改变当您只需要更改资源而不是每个视图时,整个视图会容易得多。)

我创建了一个包含 800 个 xml 的示例项目,每个 xml 引用了大约 25 dimens 个分辨率。

好像完全没有影响,如果有影响应该很小。

构建时间

Original project (1 layout)  - 10 secs
800 layouts without using dimens (assigning dp directly)   - 14 secs
800 layouts using dimens references  - 14 secs