Для использования модуля «Сохраненное состояние» для View Model необходимо добавить зависимость androidx.lifecycle:lifecycle-viewmodel-savedstate
в ваш проект. Этот пример был написан на основе версии 1.0.0-rc03
.
Пожалуйста, добавьте следующую строку в файл Gradle вашего проекта:
implementation 'androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc03'
Реализация ViewModel:
class SavedStateViewModel(private val state: SavedStateHandle) : ViewModel() {
val liveDate = state.getLiveData("liveData", Random.nextInt().toString())
fun saveState() {
state.set("liveData", liveDate.value)
}
}
Выполнение упражнения:
class SavedStateActivity : AppCompatActivity() {
lateinit var viewModel: SavedStateViewModel;
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val binding: ActivityStateBinding = DataBindingUtil.setContentView(this, R.layout.activity_state)
viewModel = ViewModelProvider(this, SavedStateViewModelFactory(this.application, this)).get(SavedStateViewModel::class.java)
binding.viewModel = viewModel
binding.lifecycleOwner = this
}
override fun onSaveInstanceState(outState: Bundle) {
if(::viewModel.isInitialized)
viewModel.saveState()
super.onSaveInstanceState(outState)
}
}
Я проверил этот код, и он отлично работает.