В чем разница между emit и emitSource с LiveData? (как в РЕАЛЬНОМ ВРЕМЕНИ ИСПОЛЬЗОВАНИЯ) - PullRequest
1 голос
/ 24 октября 2019

emit принимает класс data, тогда как emitSource принимает LiveData<T> (T -> data). Рассмотрим следующий пример: - У меня два типа звонков: -

suspend fun getData(): Data // returns directly data

и другой;

suspend fun getData(): LiveData<Data> // returns live data instead

Для первого случая я могу использовать: -

liveData {
   emit(LOADING)
   emit(getData())
}

Мой вопрос: использование вышеуказанного метода решило бы мою проблему, ПОЧЕМУ нам все равно нужен emitSource(liveData)?

Любой хороший вариант использования метода emitSource прояснит это!

1 Ответ

1 голос
/ 02 ноября 2019

Из того, что я понимаю, emit(someValue) похоже на myData.value = someValue, тогда как emitSource(someLiveValue) похоже на myData = someLiveValue. Это означает, что вы можете использовать emit всякий раз, когда вы хотите установить значение один раз, но если вы хотите соединить ваши живые данные с другим значением живых данных, вы используете emit source. Примером может быть передача данных в реальном времени из звонка в комнату (с использованием emitSource(someLiveData)), затем выполнение сетевого запроса и выдача ошибки (с использованием emit(someError)).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...