读Online Developer Guide page on XML layouts,我发现了以下声明:XML驱动的图形用户界面和性能
你的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和更快的加载时间?
在此先感谢。
感谢您的链接。我可以确认有一个R $ layout.class,但在我的应用程序中,它只保存“int”ID。 – 2012-01-06 17:13:24
好的,检查apk文件中的XML文件,事实证明它们不是XML,而是预处理文件。我想这些格式是由布局inflatter进行的运行时分析速度要快得多。 – 2012-01-06 17:20:09
我看了一下自己的APK,布局文件在APK中,与源文件具有相同的路径,但编译为二进制格式。 (编辑:ninja'd!) – slyfox 2012-01-06 17:20:34