Android的XML与Java布局的性能

Android SDK为开发人员提供了在xml文件中编写布局或直接在java代码中编写布局。 我已经阅读了它,每个人都说,XML更容易维护和简单写,但它们是静态的。 否则java布局是dynamic的,但没有人评论性能问题。 我发现的唯一一件事就是嵌套布局对性能有负面影响。 而不是编写嵌套布局,最好是自定义一个。 到现在为止还挺好 ;)。

布局devise呢? XML或Java代码? 如何在运行时或编译时parsing我的android的xml文件? 即使它们在编译时被parsing,它们也应该在运行时使用。 那么在xml中声明RelativeLayout或者在onCreate方法中声明它会更快呢?

布局定义了用户界面的可视结构,例如活动或应用程序窗口小部件的UI。 您可以通过两种方式声明布局:

  • 用XML声明UI元素 。 Android提供了一个与View类和子类相对应的简单的XML词汇表,例如小部件和布局。

  • 在运行时实例化布局元素。 您的应用程序可以编程方式创buildView和ViewGroup对象(并操作其属性)。

Android框架为您提供了灵活性,可以使用这两种方法中的一种或两种来声明和pipe理应用程序的用户界面。 例如,您可以用XML声明应用程序的默认布局,包括将出现在其中的屏幕元素及其属性。 然后,您可以在应用程序中添加代码,以便在运行时修改屏幕对象的状态,包括那些用XML声明的代码。

Eclipse的ADT插件提供了XML的布局预览 – 打开XML文件,select布局选项卡。

您还应该尝试使用层次结构查看器工具来debugging布局 – 在仿真器或设备上进行debugging时,它将显示布局属性值,绘制带填充/边距指示器的线框和完整渲染视图。

layoutopt工具可以让您快速分析您的布局和层次结构,以降低效率或其他问题。

The advantage to declaring your UI in XML is that it enables you to better separate the presentation of your application from the code that controls its behavior. Your UI descriptions are external to your application code, which means that you can modify or adapt it without having to modify your source code and recompile. For example, you can create XML layouts for different screen orientations, different device screen sizes, and different languages. Additionally, declaring the layout in XML makes it easier to visualize the structure of your UI, so it's easier to debug problems. 

在编译应用程序时,每个XML布局文件都被编译到一个View资源中。 您应该从您的应用程序代码中加载您的Activity.onCreate()callback实现中的布局资源。 通过调用setContentView() ,通过以下forms传递对布局资源的引用:

我觉得它太多只是访问此链接http://developer.android.com/guide/topics/ui/declaring-layout.html并获得更多的信息;.​​.

决定在哪里声明UI组件的一个主要因素是它在应用程序生命周期中的行为。 如果它是静态的,我会声明XML中所需的所有属性,如果它根据用户交互而改变,我将不得不在活动中实现它。

我会尽可能地为XML提供上述好处,例如连贯性,对各种屏幕尺寸的更好pipe理,本地化,资源pipe理等,

因为你的资源xml文件也将使用aapt工具进行预编译,所以它不会有太大的差别。因此,XML转换将发生在源资源文件中,并随着java源文件被编译为Java类文件。 因此,性能应该大致相同也是合乎逻辑的,因为最终两者都将被编译,并且两者的内存将在运行时分配。 此外,我检查了我的示例应用程序,通过XML和通过Java制作类似的意见,同时分析他们,我发现意见的呈现需要大约相同的时间。 🙂