[英]Kotlin Android Extensions vs Android Data Binding Library, memory usage
我有一个关于两种情况下使用的内存的问题 - > Android数据绑定与Android Kotlin扩展。 在哪种情况下,设备上使用的内存会减少?
Kotlin Android扩展程序首先调用findViewById,然后,结果将本地存储在缓存中。 这意味着使用了内存。
DataBinding通过创建的绑定类在布局和活动/片段之间创建路径。
我关心的是当我们考虑用户设备上的内存使用时,使用效率更高的那个。 任何人都可以帮我找出答案吗? 我倾向于说dataBinding效率更高。 这是一个类似的问题,但不是效率方向。
谢谢!
tldr:据我所知 ,只有在你不使用布局的所有视图时,根据内存使用情况没有区别。 两者都缓存视图,但是当数据绑定初始化所有时,并且kotlin需要。 根据性能,kotlin扩展在片段/活动创建期间比数据绑定更快(我会说在大多数情况下无法识别)。
文档Kotlin Android扩展:
在每个Kotlin Activity中添加隐藏的缓存功能和字段。 该方法非常小,因此它不会增加APK的大小。 用函数调用替换每个合成属性调用。
这是如何工作的,当调用合成属性时,接收器是模块源中的Kotlin Activity / Fragment类,调用缓存函数。 例如,给定
class MyActivity : Activity() fun MyActivity.a() {
this.textView.setText(“”)
}
在MyActivity中生成隐藏的缓存函数,因此我们可以使用缓存机制。
但是在以下情况中:
fun Activity.b() {
this.textView.setText(“”)
}
我们不知道是否仅在来自我们的源的活动或普通Java活动上调用此函数。 因此,我们不在那里使用缓存,即使前一个示例中的MyActivity实例是接收者。
原因:Kotlin使用合成属性,并使用缓存函数按需调用(因此轻微的快速活动/片段加载),而数据绑定同时绑定所有视图(这会消耗更多的时间)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.