J'essaie de mettre en œuvre le modèle MVVM dans mon application Android. J'ai lu que les ViewModels ne devraient pas contenir de code spécifique à Android (pour faciliter les tests), mais j'ai besoin d'utiliser le contexte pour diverses choses (obtenir des ressources à partir de xml, initialiser les préférences, etc). Quelle est la meilleure façon de faire cela ? J'ai vu que AndroidViewModel
contient une référence au contexte de l'application, mais comme il contient du code spécifique à Android, je ne suis pas sûr qu'il doive se trouver dans le ViewModel. Ces éléments sont également liés aux événements du cycle de vie de l'activité, mais j'utilise Dagger pour gérer la portée des composants, donc je ne suis pas sûr que cela ait une incidence. Je suis novice en matière de modèle MVVM et de Dagger, alors toute aide est la bienvenue !
Pourquoi ne pas utiliser directement le paramètre d'application et un ViewModel normal ? Je ne vois pas l'intérêt de "getApplication<Application>()". Cela ne fait qu'ajouter du texte passe-partout.
0 votes
Juste au cas où quelqu'un essaierait d'utiliser
AndroidViewModel
mais en obtenantCannot create instance exception
alors vous pouvez vous référer à ma réponse stackoverflow.com/a/62626408/10552411 votes
Vous ne devriez pas utiliser le contexte dans un ViewModel, créez plutôt un UseCase pour obtenir le contexte de cette manière.
2 votes
@RubenCaster avez-vous un exemple ou un lien GitHub pour cela ?
1 votes
@Parmesh Non, désolé. C'est un projet privé =(