在典型的 Android ViewModel 中,我们可以使用以下方法轻松创建可恢复的 LiveData
val liveData = savedStateHandle.getLiveData<String>("SomeKey")
每当设置 liveData 值时,它会自动保存和恢复
但是,如果我们使用liveData
协程构建器(即https://developer.android.com/topic/libraries/architecture/coroutines#livedata)
val liveDataSaved: LiveData<String> = liveData {
emit(someValue)
}
我们如何也加入它savedStateHandle
?(例如恢复时,它会首先检索之前发出的值,而不是重新初始化)
注意:我可以做如下,只是看起来很hacky。
val liveDataSaved: LiveData<String> = liveData {
val someValue = savedStateHandle.get("Key") ?: getValue()
savedStateHandle.put("Key", someValue)
emit(someValue)
}