Sto attraversando questo codelab: https://developer.android.com/codelabs/android-lifecycles#6 Questo spiega come utilizzare SavedStateHandle in un ViewModel per sopravvivere processo di morte. Il costruttore del ViewModel è come qui sotto:
private SavedStateHandle mState;
public SavedStateViewModel(SavedStateHandle savedStateHandle) {
mState = savedStateHandle;
}
E il viewmodel è inizializzato in Attività come segue:
mSavedStateViewModel = new ViewModelProvider(this).get(SavedStateViewModel.class);
Quando è il ViewModel del costruttore chiamato? E come fa il Viewmodel ottenere i savedStateHandle
parametro del ViewModel?
Edit:
Ho trovato la risposta alla mia domanda attraverso questo blogpost: https://www.rockandnull.com/viewmodel-savedstate/
Si dice che se ilSavedStateHandle
è l'unico parametro nel nostro viewmodel del costruttore il by viewModels
delegato fornisce al viewmodel automaticamente.
Tuttavia, Se si dispone di una combinazione di parametri personalizzati che ha fornito il quadro di iniezione di dipendenza(in Fondo) e.g: il repository, un altro paio di runtime argomenti e.g: categoria selezionata ID e la SavedStateHandle per aiutarci a sopravvivere il processo di morte nel viewmodel costruttore - Come possiamo fornire tutti i parametri di fabbrica?
Si prega di inviare un piccolo esempio per la mia comprensione