Middle
Como guardar o estado do ViewModel nos componentes arquitetônicos do Android?
sobes.tech IA
Resposta da IA
Para guardar o estado do ViewModel, que sobreviverá à a destruição do processo, utiliza-se SavedStateHandle.
SavedStateHandle é um armazenamento semelhante a um Map, associado ao estado guardado de uma Activity ou Fragment.
Princípio de funcionamento:
ViewModelrecebeSavedStateHandlecomo parâmetro do construtor.- Os dados são salvos em
SavedStateHandleusando o métodoset(). - Ao restaurar a Activity/Fragment, os dados salvos estão disponíveis automaticamente no
SavedStateHandledoViewModel, que será recriado.
Exemplo de uso:
class MyViewModel(private val state: SavedStateHandle) : ViewModel() {
private val _myValue = state.getLiveData<String>("myKey")
val myValue: LiveData<String> get() = _myValue
fun saveValue(newValue: String) {
state.set("myKey", newValue)
}
}
SavedStateHandle suporta o armazenamento de tipos primitivos, como Int, String, Boolean, bem como objetos parcelable e serializáveis.
É importante entender que SavedStateHandle destina-se a guardar uma pequena quantidade de dados relacionados à UI. Para guardar dados mais complexos ou de maior volume, deve-se usar outros mecanismos, como Room Database ou DataStore.