实现LiveData的正确方法

时间:2019-05-20 07:21:47

标签: kotlin android-livedata

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

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

但是我在其他地方看到过这样的代码:

val currentName: MutableLiveData<String> = MutableLiveData()

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

这两种情况都有效吗?

1 个答案:

答案 0 :(得分:1)

是的,这两种情况都是有效的。但是,两者之间有明显的区别。使用by lazy时,它仍将设置LiveData对象,但直到首次使用该变量时才设置它。对于第二个选项,它将在创建父对象时初始化LiveData对象。