从文档中:
从源代码中可以看出,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段落