LiveData горячая или холодная?

Мы знаем, что StateFlow и SharedFlow популярны.

StateFlow - это горячий поток - он остается в памяти до тех пор, пока поток собирается или пока существуют любые другие ссылки на него из корня сборки мусора.

SharedFlow - это горячий поток, который передает значения всем потребителям, которые от него собирают.

Сам по себе поток холодный.

Потоки - это холодные потоки, похожие на последовательности ...

У меня есть вопрос, на который я не нашел прямого ответа. LiveData горячая или холодная?

1 ответ

Решение

LiveData нельзя напрямую сравнивать с Flow. Это наиболее точно сопоставимо с StateFlow.

Код, который вызывает setDataна объекте LiveData всегда будут изменять состояние LiveData, независимо от присутствия на нем каких-либо наблюдателей. В этом плане жарко - присутствие наблюдателей вообще не имеет значения. Состояние всегда меняется, и это состояние транслируется всем наблюдателям.

Кроме того, наблюдатели в LiveData всегда будут получать из него значение текущего состояния - они не ждут (и не приостанавливают), пока какие-либо значения станут доступны. LiveData всегда должна иметь значение. Наблюдатели получат это значение до того, как в него будут помещены какие-либо дополнительные данные.

В этом отношении LiveData, скорее всего, считается «горячей» из-за шаблонов ее использования, аналогичных StateFlow.

Другие вопросы по тегам