У меня есть действие, в котором используется архитектурный компонент ViewModel:
class RandomIdViewModel : ViewModel() {
var currentId : MutableLiveData<String?> = MutableLiveData()
init {
currentId.value = UUID.randomUUID().toString()
}
}
А затем в моем Activity у меня есть это в методе onCreate ():
viewModel = ViewModelProviders.of(this).get(RandomIdViewModel::class.java)
viewModel.currentId.observe(this, idObserver)
Каждый раз, когда я переворачиваю телефон, идентификатор меняется. Поэтому я не совсем понимаю, почему вызывается init, когда я устанавливаю объект viewModel.
ИЗМЕНИТЬ
Я просматривал рекомендации по сохранению состояния пользовательского интерфейса, и это определенно кажется что ViewModel должен поддерживать свои данные во время простых изменений конфигурации:
ViewModel идеально подходит для хранения данных, связанных с пользовательским интерфейсом, и управления ими, когда пользователь активно использует приложение. Он обеспечивает быстрый доступ к данным пользовательского интерфейса и помогает избежать повторной выборки данных из сети или диска при повороте, изменении размера окна и других часто встречающихся изменениях конфигурации. ...
ViewModel идеально подходит для хранения данных, связанных с пользовательским интерфейсом, и управления ими, когда пользователь активно использует приложение. Он обеспечивает быстрый доступ к данным пользовательского интерфейса и помогает избежать повторной выборки данных из сети или диска при повороте, изменении размера окна и других часто встречающихся изменениях конфигурации.