【问题标题】:Kotlin Android Extensions vs Android Data Binding Library, memory usageKotlin Android Extensions vs Android Data Binding Library,内存使用
【发布时间】:2019-06-10 07:28:33
【问题描述】:

我对这两种情况下使用的内存都有疑问 ->Android 数据绑定与 Android Kotlin 扩展。 在哪种情况下会减少设备上使用的内存?

Kotlin Android-extension 首先调用 findViewById,然后,结果将存储在本地缓存中。这意味着使用的内存。

DataBinding 通过创建的绑定类在布局和活动/片段之间创建路径。

当我们考虑到用户设备上的内存使用情况时,我关心的是使用效率更高的那个。 谁能帮我找出答案?我倾向于说 dataBinding 更有效。 Here 是类似的问题,但不在效率方向。

谢谢!

【问题讨论】:

    标签: android kotlin android-databinding kotlin-extension


    【解决方案1】:

    tldr: 据我所知,仅当您不使用布局的所有视图时,内存使用情况没有区别。两者都缓存视图,但是当数据绑定初始化所有视图时,andoid kotlin 会按需获取。根据性能,kotlin 扩展在片段/活动创建期间比数据绑定稍快(我会说在大多数情况下无法识别)。

    Kotlin Android 扩展文档:

    在每个 Kotlin 中添加一个隐藏的缓存函数和一个字段 活动。该方法非常小,因此不会增加大小 APK的很多。用一个函数替换每个合成属性调用 打电话。

    它的工作原理是在调用合成属性时,其中 接收器是模块中的 Kotlin Activity/Fragment 类 源,缓存函数被调用。例如,给定

    class MyActivity : Activity() fun MyActivity.a() { 
             this.textView.setText(“”) 
    }
    

    MyActivity内部生成了一个隐藏的缓存函数,所以我们可以 使用缓存机制。

    但是在以下情况下:

    fun Activity.b() { 
        this.textView.setText(“”)
    }
    

    我们不知道这个函数是否只会在活动上被调用 也来自我们的来源或普通的 Java 活动。因此,我们不 在那里使用缓存,即使之前的 MyActivity 实例 例如接收者。

    原因:Kotlin 使用合成属性,并且使用缓存功能按需调用这些属性(因此 Activity/Fragment 加载速度稍快),而 Databinding 一次绑定所有视图(这会消耗更多时间)。

    【讨论】:

      猜你喜欢
      • 2020-02-09
      • 1970-01-01
      • 1970-01-01
      • 2017-12-16
      • 2018-02-07
      • 2023-04-03
      • 1970-01-01
      • 2021-03-18
      • 2021-12-22
      相关资源
      最近更新 更多