我对两种情况下使用的内存都有疑问-> Android数据绑定与Android Kotlin扩展。 在哪种情况下,设备上使用的内存会更少?
Kotlin Android扩展首先调用findViewById,然后将结果本地存储在缓存中。这意味着已使用内存。
DataBinding 通过创建的绑定类在布局与活动/片段之间创建路径。
我担心的是,当我们考虑用户设备上的内存使用情况时,使用效率更高的一种。 有人可以帮我找出答案吗?我倾向于说dataBinding更有效。 Here是一个类似的问题,但不是在效率方面。
谢谢!
答案 0 :(得分:0)
tldr: 据我所见,只有在您不使用布局的所有视图的情况下,内存使用情况才有所不同。两者都缓存视图,但是在数据绑定初始化所有对象时,andoid kotlin可以按需使用。根据性能,kotlin扩展比片段/活动创建过程中的数据绑定要快(在大多数情况下无法识别)。
文档Kotlin Android扩展:
在每个Kotlin内添加一个隐藏的缓存功能和一个字段 活动。该方法非常小,因此不会增加大小 APK的数量很多。用函数替换每个综合属性调用 打电话。
此方法的工作原理是,在调用合成属性时, 接收器是模块中的Kotlin活动/片段类 源,将调用缓存功能。例如,给定
class MyActivity : Activity() fun MyActivity.a() {
this.textView.setText(“”)
}
一个隐藏的缓存函数是在MyActivity内部生成的,因此我们可以 使用缓存机制。
但是在以下情况下:
fun Activity.b() {
this.textView.setText(“”)
}
我们不知道是否仅在“活动”上调用此函数 也可以从我们的资源中获得,也可以从简单的Java活动中获得。因此,我们不会 即使在那里使用MyActivity实例,也可以在那里使用缓存 例如接收器。
原因:Kotlin使用合成属性,并使用缓存功能(因此,活动/片段加载速度稍快)按需调用这些属性,而数据绑定一次绑定所有视图(这会花费更多时间)。