初始化时调用 LiveData Observer & ObserveOnce 不工作

LiveData Observer Called on initialization & ObserveOnce not working

我正在尝试使用 android 实时数据从片段中观察视图模型中异步任务的完成状态。所以我考虑从这个 post

使用 ObserveOnce
    // in ViewModel
var status= MutableLiveData<Boolean>()

fun asyncTask(){
// do some async task
asyncTask.addOnSuccessListener{
    status.value = true
}
asyncTask.addOnFaiureListener{
    status.value = false
}
}

// In Fragment

fun startProcess(){
viewmodel.status.value = false
viewmodel.asyncTask
viewmodel.status.observeOnce(viewLifecycleOwner, Observer { it ->
if(it){
Toast.maketext(requireActivity(),"Task Done",Toast.LENGTH_SHORT).maketext()
}else{
Toast.maketext(requireActivity(),"Task Failed",Toast.LENGTH_SHORT).maketext()
}

})
}

这里的问题是这个observeOnce在初始化后立即被调用,并且总是显示false。

我不明白这里有什么问题!!

您实际上为您的状态设置了一个值,一旦观察者处于活动状态,该值就会发出。

If LiveData already has data set, it will be delivered to the observer.
...
When data changes while the owner is not active, it will not receive any updates. If it becomes active again, it will receive the last available data automatically.

除非您需要默认值,否则不要设置初始值。