在 XML 中定义资源会导致解析开销吗?

Posted

技术标签:

【中文标题】在 XML 中定义资源会导致解析开销吗?【英文标题】:Does Defining Resources In XML Cause Parsing Overhead? 【发布时间】:2013-12-03 17:43:10 【问题描述】:

android中XML资源文件的解析是否发生在运行时? 如果有任何解析开销,编写视图是否会以编程方式消除它? 如果在单独的 .java 文件中创建资源然后加载,它们会比在 XML 中定义它们消耗更多的内存吗?

【问题讨论】:

developer.android.com/tools/building/index.html。检查文档 这里的内存绝对可以忽略不计。解析 xml 时使用的内存也应该在完成后变得可用。 【参考方案1】:

是的,XML 资源文件(布局、Drawable 等)在运行时被解析。但是,这产生的开销非常小。就所消耗的内存量而言,由于 XML 文件被解析为源(您将编写的内容的优化版本),它们将占用与单独的 .java 文件大致相同的 RAM 量。

【讨论】:

【参考方案2】:

是和不是。

At compile time,XML 资源被编译成二进制 XML 格式。然后在设备上运行时解析(解码)这些二进制 XML 文件,但这比解析原始文本 XML 更快。

理论上,在代码中生成视图层次结构比扩展二进制 XML 更快。在实践中,这种差异通常可以忽略不计。 维护代码而不是 XML 视图层次结构在开发人员时间方面要昂贵得多。

内存消耗差异可能也不显着。

【讨论】:

以上是关于在 XML 中定义资源会导致解析开销吗?的主要内容,如果未能解决你的问题,请参考以下文章

Java 多线程 资源冲突

在 UIScrollView 中长时间滚动一个非常大的 UIView 会导致资源问题吗?

并发读取会导致开销吗?

JAVA线程池学习以及队列拒绝策略

传递 XML 与传递用户定义类型

深入解析 Flink 细粒度资源管理