Junior — Middle
Hoe zorg je ervoor dat de staat van de ViewModel behouden blijft bij het navigeren tussen schermen?
sobes.tech AI
Antwoord van AI
Для сохранения состояния ViewModel при переходах между экранами в Android рекомендуется использовать SavedStateHandle. Это специальный объект, который позволяет сохранять и восстанавливать данные ViewModel при пересоздании, например, при повороте экрана или навигации.
Пример использования:
class MyViewModel(private val savedStateHandle: SavedStateHandle) : ViewModel() {
var userName: String?
get() = savedStateHandle["userName"]
set(value) {
savedStateHandle["userName"] = value
}
}
При навигации через Navigation Component можно передавать аргументы, которые автоматически сохраняются в SavedStateHandle. Таким образом, состояние ViewModel сохраняется и восстанавливается без дополнительного кода.
Если ViewModel создаётся вручную, можно использовать ViewModelProvider с SavedStateViewModelFactory, чтобы обеспечить поддержку сохранения состояния.