Стратегии в LiveData. Реализуем MVVM
Хочу реализовать MVVM при помощи LivaData.
Есть экран Splash.
Состояние экрана
sealed class SplashState {
object Loading : SplashState()
object LoadingSuccess: SplashState()
object Error: SplashState()
}
в ViewModel есть состояние
private val state: MutableLiveData<SplashState> = MutableLiveData(SplashState.Loading)
fun state() = state as LiveData<SplashState>
//некая операция
init {
interactor.getData()
.subscribe({
state.value = SplashState.LoadingSuccess
}, {
state.value = SplashState.Error
})
}
В Activity подписываюсь на состояние
splashViewModel.state().observe(this, Observer {
when (it){
is SplashState.LoadingSuccess -> {
//бла бла прошел
}
is SplashState.Error -> {
//открываем Toast ошибки
}
}
})
Как выходить из ситуации когда Error нужно показывать только один раз? Например, произошла ошибка, показали Toast с ошибкой и больше эта ошибка не будет приходить пока не возникнет еще раз (т.е. если перевернули экран эта ошибка уже не придет).
p.s. Это абстрактный пример, в место Error может быть что то другое.