LiveData
определенно позволяет отправлять наблюдателям null
, если они специально отправлены.Вы можете видеть, что сигнатура метода для android.arch.lifecycle.Observer.onChanged
явно помечает параметр данных как @Nullable
.
Если вы не хотите обрабатывать нулевой тип, вы можете просто использовать оператор ?
для его безопасной обработки:
myViewModel.catLiveData.observe(this, Observer { it?.let(::doWork) })
В качестве альтернативы, вы можете создать свой собственный пользовательский Observer
, который обрабатывает это для вас, например
class Observer2<T>(private val block: (T) -> Unit) : Observer<T> {
override fun onChanged(data: T?) {
data?.let(block)
}
}
, что позволит вам написать:
myViewModel.catLiveData.observe(this, Observer2(::doWork))