似乎在每个 Android 版本中,布局充气器都变得越来越慢。在许多情况下,Lollipop 和 Upside Down Cake 之间的速度减慢是 4 倍。人们指出的解决方案是以编程方式生成视图。但是,如果 ViewBindings 已经解析 XML 文件并生成代码,是否存在技术原因导致它无法以编程方式生成视图本身?这似乎显然可以加快几乎每个人的代码速度,同时鼓励良好的风格和更正确的程序。
例如,如果您这样做,
ActivityMainBinding.inflate(getLayoutInflator())
,至少据我所知,它会经历加载 inflater.inflate(R.id.activity_main)
所发生的 XML 文件的标准流程,它也会执行 findViewById
为你。 然而,既然它正在为此进行代码生成,那么是否有理由不能为 XML 膨胀进行代码生成呢? 至少,这将绕过所有文件系统调用和 XML 解析,从而免费大幅提升速度。
无论如何,我不知道是否有技术原因没有做到这一点,或者只是没有引起任何人的注意? 或者它是否可用但我只是不知道?
这是生成夸大布局的代码(在构建时)出现问题的原因之一:
根据特定设备配置在运行时提供资源。对于以下情况,您可以使用替代布局文件:
为所有可能的外形尺寸组合生成代码是不切实际的。