Из документации:
addSource (источник LiveData,
Наблюдатель включен)
Начинает прослушивать данный источник LiveData, наблюдатель onChanged будет
вызывается при изменении исходного значения.
onChanged обратный вызов будет вызываться только тогда, когда этот MediatorLiveData
активен.
Если данные LiveData уже добавлены в качестве источника, но с
другой Observer, исключение IllegalArgumentException.
Из исходного кода говорится, что функция 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)
}
Так будет ли это безопасным занятием?