kotlin - LiveData的正确实现方式

标签 kotlin android-livedata

在 Android 文档中,它显示了一个创建 LiveData 对象的示例,如下所示:

val currentName: MutableLiveData<String> by lazy {
        MutableLiveData<String>()
}

但是我在其他地方看到过这样的代码:
val currentName: MutableLiveData<String> = MutableLiveData()

这两个都位于 View 模型中。在第二个示例中,LiveData 模型在创建类时实例化,而在第一个示例中,仅在首次使用对象时实例化。

这两种情况都有效吗?

最佳答案

是的,这两种情况都是有效的。但是,两者之间存在明显差异。使用时 by lazy它仍然会设置 LiveData 对象,但在第一次使用变量之前不会设置它。在第二个选项的情况下,它将在创建 parent 时初始化 LiveData 对象。

关于kotlin - LiveData的正确实现方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56216053/

相关文章:

java - Kotlin/Java 在 map 中收集 map 的功能和不可变方式

安卓 Kotlin : Error when using 'suspend' in DAO - Following CodeLabs guide

android - 具有多个参数的 MediatorLiveData 或 switchMap 转换

android - Kotlin 协程启动{} 与启动{ withContext{} }

android - 创建新文件时权限被拒绝错误安卓系统

android - : Landroid/arch/core/executor/AppToolkitTaskExecutor 解析失败

Android LiveData/StateFlow 列表项属性更新问题

android - 观察一个 MutableLiveData 列表

android - LiveData 观察永远不工作

java - 如何在kotlin中获取匿名类中的父类