Android - 声明性与程序化UI

Ste*_*eve 18 performance android

有没有人见过或编译过比较声明(XML)与Android中以编程方式创建的UI的基准?

谷歌已经采取了一些措施来加速声明性方法,但你仍然可以在运行时完成布局膨胀步骤.

您是否曾因任何原因切换(或考虑)将UI从声明更改为程序化?

sea*_*ges 23

布局膨胀很少在运行时完成.正如LayoutInflator API文档中暗示的那样:

出于性能原因,视图通胀在很大程度上依赖于在构建时完成的XML文件的预处理.因此,目前无法在运行时将LayoutInflater与XmlPullParser一起使用普通XML文件

如果您查看源代码,许多视图都是根据其XML标记从哈希映射中提取的.

在回答你是否对基础设施进行基准测试的问题时,我不得不说.就个人而言,我发现在Android中对应用程序的布局inflater进行基准测试的想法相当于在Firefox中为您的网站对DOM解析器进行基准测试.我不认为这个练习毫无意义,但你应该有一个比"我的活动布局对于inflater来说太复杂"更好的理由......

如果您需要动态生成的布局,最好以编程方式创建它.如果您的视图只需要很长时间来进行膨胀,那么您应该简化视图XML.

  • 此外,XML文件被编译为二进制文件,我们可以比常规XML更快地解析几个数量级. (5认同)