LiveData горячая или холодная?
Мы знаем, что StateFlow и SharedFlow популярны.
StateFlow - это горячий поток - он остается в памяти до тех пор, пока поток собирается или пока существуют любые другие ссылки на него из корня сборки мусора.
SharedFlow - это горячий поток, который передает значения всем потребителям, которые от него собирают.
Сам по себе поток холодный.
Потоки - это холодные потоки, похожие на последовательности ...
У меня есть вопрос, на который я не нашел прямого ответа. LiveData горячая или холодная?
1 ответ
LiveData нельзя напрямую сравнивать с Flow. Это наиболее точно сопоставимо с StateFlow.
Код, который вызывает
setData
на объекте LiveData всегда будут изменять состояние LiveData, независимо от присутствия на нем каких-либо наблюдателей. В этом плане жарко - присутствие наблюдателей вообще не имеет значения. Состояние всегда меняется, и это состояние транслируется всем наблюдателям.
Кроме того, наблюдатели в LiveData всегда будут получать из него значение текущего состояния - они не ждут (и не приостанавливают), пока какие-либо значения станут доступны. LiveData всегда должна иметь значение. Наблюдатели получат это значение до того, как в него будут помещены какие-либо дополнительные данные.
В этом отношении LiveData, скорее всего, считается «горячей» из-за шаблонов ее использования, аналогичных StateFlow.