I'm trying to use android live data to observe completion status of an async task in my viewmodel from my fragment. So i considered using ObserveOnce from this post LiveData remove Observer after first callback
// 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()
}
})
}
The problem here is that this observeOnce is called immediately after initilization, and is always showing false.
I dont understand what is wrong here!!