Sobes.tech
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, чтобы обеспечить поддержку сохранения состояния.