2017-07-11 25 views
0

Pour toute personne ayant cette question,Quelle est la différence entre ViewModel et AndroidViewModel

Selon Documentation Android,

Depuis la ViewModel survive activité spécifique et instanciations fragment, il ne doit jamais faire référence à une vue ou toute classe pouvant contenir une référence au contexte de l'activité. Si le ViewModel a besoin du contexte Application (par exemple, pour trouver un service système), il peut étendre la classe AndroidViewModel et avoir un constructeur qui reçoit l'Application dans le constructeur (puisque la classe Application étend Context).

La documentation se trouve ici: https://developer.android.com/topic/libraries/architecture/viewmodel.html

Edit: Pour une explication en double: Je veux dire que vous pouvez étendre la classe à viewmodel ainsi que AndroidViewModel. Quand vous devriez étendre qui, l'explication ci-dessus est pour cela seulement. Les liens ci-dessus dit à propos de l'architecture ViewModel MVVM en général et non pas le android.arch.lifecycle.ViewModel

+0

Je veux dire que vous pouvez étendre la classe à ViewModel ainsi que AndroidViewModel. Quand vous devriez étendre qui, l'explication ci-dessus est pour cela seulement. Les liens ci-dessus parlent de ViewModel de l'architecture MVVM en général et non du android.arch.lifecycle.ViewModel –

+0

@ M0CH1R0N: veuillez lire le commentaire ci-dessus. Si vous pensez qu'il s'agit d'un article en double, je le supprimerai dès que possible. Merci. –

+0

Mon diable, j'ai relu ta question. AndroidViewModel hérite de ViewModel, il a donc toutes les mêmes fonctionnalités. La seule fonctionnalité ajoutée pour AndroidViewModel est qu'il est sensible au contexte: lors de l'initialisation d'AndroidViewModel, vous devez transmettre le contexte en tant que paramètre. Cela peut être utilisé si vous voulez montrer des toasts par exemple. – M0CH1R0N

Répondre

2

Pour développer mon commentaire:

Le AndroidViewModel étend ViewModel, il a donc toutes les mêmes fonctionnalités. La seule fonctionnalité ajoutée pour AndroidViewModel est qu'il est sensible au contexte: lors de l'initialisation d'AndroidViewModel, vous devez transmettre le contexte Application en tant que paramètre. A titre d'exemple, pourquoi cela est utile, vous pouvez montrer des toasts qui ont besoin du contexte d'application.