Обнуляется, потому что есть конструктор
LiveData ()
Создает LiveData без назначенного ему значения.
и, например,
val data: LiveData<Long> = LiveData()
data.value
вернет null
.
Или рассмотрит ваш код:
liveData {
while (true) {
emit(System.currentTimeMillis())
delay(1000)
}
}
Вы emit
значение сразу, но если вы измените порядок
liveData {
while (true) {
delay(1000)
emit(System.currentTimeMillis())
}
}
, то в течение первой секунды значение не будет выдано, и вызов currentTime.value
вернет null
.
(Примечание. : намеренно ли вы создаете новый LiveData
при каждом currentTime
доступе?)