繁体   English   中英

Kotlin Android Extensions与Android数据绑定库,内存使用情况

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM