0

Je travaille sur les composants d'architecture Android pendant un certain temps qui a été introduit dans Google IO 2017Quelle est la différence entre AndroidViewModel et ViewModel dans les composants d'architecture Android?

un de leur composant afin d'éviter des changements de configuration problème qu'ils fournissent ViewModel et AndroidViewModel cours

Selon la doc:

AndroidViewModel: contexte d'application conscient ViewModel

ViewModel: ViewModels peut également être utilisé comme couche de communication entre les différents fragments d'un Activity.Each Fragment peut acquérir le ViewModel en utilisant la même clé via leur activité

Mais pour AndoirdViewModel scénario je peux obtenir le contexte d'application en développant une classe à la demande Quelle est la différence entre eux dans le développement Android?

Parce que les deux sont attachés au cycle de vie Activité/Fragment uniquement.

+0

vous posez 2 questions sur la même question, je crois que vous pouvez changer le titre et l'axer sur pourquoi utiliser AndroidViewModel au lieu de l'extension Application. La réponse que @CommonsWare a donnée est toujours valide. De cette façon, vous pouvez demander de supprimer le "dupliqué" tag parce que créer une nouvelle question pour une bonne réponse ... Je ne pense pas que ce soit une bonne idée. – MiguelHincapieC

Répondre

2

Mais pour le scénario AndoirdViewModel je peux obtenir le contexte d'application en développant une classe à la classe d'application

Créer votre propre sous-classe personnalisée de Application ne fait pas comme par magie cette instance singleton disponible à un ViewModel.

Il est possible de créer une sous-classe personnalisée de Application qui a sa propre méthode getInstance() ou quelque chose pour exposer directement le singleton. Google n'aime pas ce modèle (et moi non plus, d'ailleurs), et Google n'incite donc pas les développeurs à l'utiliser.

Quelle est la différence entre eux dans le développement Android?

Un ViewModel seul n'a aucun bon moyen d'obtenir un Context. AndroidViewModel fournit un Application pour une utilisation en tant que Context, et fournit spécifiquement le singleton Application donc nous sommes sûr que le Context lui-même ne représente pas une fuite de mémoire.