【发布时间】:2012-02-04 08:38:17
【问题描述】:
阅读Online Developer Guide page on XML layouts,发现如下说法:
您的 UI 描述在您的应用程序代码之外,这意味着您可以修改或调整它,而无需修改您的源代码并重新编译。
我知道 XML 布局和资源的许多优点,但是由于 XML 文件放在 APK 中,我认为没有真正的方法可以在不重新打包的情况下修改 GUI。我的意思是,我们大多数人都使用 eclipse ADT 插件和 ANT 来打包应用程序,因此不编译类文件并没有真正的好处(因为在修改资源文件后,开发人员将不得不重新打包应用程序并生成新的 APK文件)。因此,如果不重新部署整个 APK,就无法仅在设备上重新部署 GUI。
如果这个假设成立,那么 XML 文件在 APK 文件的生命周期内将是相同的。我猜这些文件(特别是布局文件)必须在运行时(在活动的 onCreate 之前)进行解析和处理,这比以编程方式构建 GUI(如在 Swing 中)效率低。布局通常不是瓶颈,但如果我是正确的,我认为这里会浪费一点时间,可以更好地使用(例如,动画)。
阅读同一页,它指出:
当你编译你的应用程序时,每个 XML 布局文件都会被编译成一个 View 资源。
检查我的一个 APK,我一直在寻找 classes.dex 内的预编译文件,除了我的 java 类和 R.class 文件之外什么都没有。布局 XML 文件位于 /res/layout folder 内,并且有一个名为 resources.arsc 的文件,它似乎包含有关其他资源(字符串、图标名称)的信息,但我认为与视图无关(如果我错了,请纠正我)。
我的问题:
- 是否预编译了 XML 布局文件,以及编译到哪个文件?
- 如果没有,是否有编译选项可以将布局信息完全预编译到文件中以加快加载时间? (理想情况下,这将是一个类文件)
- 如果没有,有没有办法在第一次执行时创建该文件并将其缓存在应用程序安装文件夹中,以便后续运行时执行可以读取该文件而不是解析 XML 并具有更快的加载时间?李>
提前致谢。
【问题讨论】:
标签: android xml performance android-layout