livedata 和 mutableLiveData 有什么区别?

Moh*_*our 0 android kotlin android-livedata

livedata 和 mutableLiveData 有什么区别?什么时候双方都能观察到新值?

Kas*_*ood 8

LiveDataMutableLiveData之间的唯一关键区别是您可以更改MutableLiveData的值,但LiveData不允许您更改它的值。LiveData只让你观察和利用它的价值。

它们通常一起使用,MutableLiveData 用于记录更改的值,LiveData 用于通知 UI 有关更改的值。 例如

class SampleViewModel(): ViewModel() {
    private val _sampleString = MutableLiveData<String>()
    val sampleString: LiveData<String> get() = _sampleString

    fun setSampleString(temp: String) {
        _sampleString.value  = temp
    }
}

class MainActivity: AppCompatActivtiy {
   private val viewModel: SampleViewModel by viewModels()

   //in onCreate
    viewModel.sampleString.observe(this) {
        //here you will have the value sampleString, that you can use as you want.
    }   
    
    //that is how you can update the value of MutableLiveData 
    viewModel.setSampleString("random string")

}
Run Code Online (Sandbox Code Playgroud)

在这里,一旦您将值分配给 MutableLiveData _sampleString,LiveData SampleString将收到通知并通知其中所做的更改。一旦 MutableLiveData 中更新了新值,LiveData 就会观察到新值。

我希望这已经消除了您的疑虑。