在我的Android ViewModel中,我有这样的东西:
private val _dataReady : MutableLiveData<Boolean> = MutableLiveData<Boolean>() val dataReady : LiveData<Boolean> = _dataReady var data1 : Int var data2 : Int var data3 : Int // called from a fragment fun loadData() { viewModelScope.launch { _dataReady.postValue(false) items.clear() val jobs = listOf( launch { data1 = suspendFun1() }, launch { data2 = suspendFun2() }, launch { data3 = suspendFun3() } ).joinAll() _dataReady.postValue(true) } }
这是错误的,因为它阻塞了UI(.joinAll()
将所有内容与主线程连接起来)。
我的意图是并行运行所有作业,等待所有作业完成,然后调用_dataReady.postValue(true)
(例如解锁UI上的一些按钮)。
我怎样才能解决这个问题?