从文档中:



从源代码中可以看出,addSource函数始终在主线程上执行。

@MainThread
public <S> void addSource(@NonNull LiveData<S> source, @NonNull Observer<? super S> onChanged) ...

这是否意味着提供给addSource方法的回调也可以在主线程上运行?

我想了解这一点,因为我想在回调中执行setValue,并且setValue需要在主线程上运行。

我想做类似的事情:
viewState.addSource(someLiveData) { networkResourceResult ->
    viewState.value = currentViewState().copy(showLoadingSpinner = networkResource.status)
}


那么这将是安全的事情吗?

最佳答案

您应该使用postValue()方法来设置工作线程中的值



浏览Update LiveData objects段落

10-08 03:03