0

Ich habe eine Zeit lang auf Android Architektur-Komponenten arbeiten, die in Google IO 2017Was ist der Unterschied zwischen AndroidViewModel und ViewModel in Android-Architekturkomponenten?

Einer ihrer Komponente eingeführt wurde Konfiguration zu vermeiden, ändert sie

Gemäß der doc ViewModel und AndroidViewModel Klassen Ausgabe liefern:

AndroidViewModel: Anwendungskontext bewusst ViewModel

Ansichtsmodell: Viewmodels kann auch als Kommunikationsschicht zwischen den verschiedenen Fragmenten eines Activity.Each Fragment verwendet werden, können die ViewModel mit dem gleichen Schlüssel über ihre Aktivität

Aber für AndoirdViewModel Szenario erwerben kann ich Anwendungskontext erhalten, indem eine Klasse Anwendung erstreckt Klasse

Was ist der tatsächliche Unterschied zwischen ihnen in Android Development? Weil beide nur dem Aktivitäts-/Fragment-Lebenszyklus zugeordnet sind.

+0

Sie fragen 2 Dinge in der gleichen Frage, ich glaube, Sie können den Titel wechseln und konzentrieren Sie sich darauf, warum AndroidViewModel statt erweitern Anwendung verwenden. Die Antwort, die @CommonsWare gab, ist immer noch gültig. Auf diese Weise können Sie bitten, den "duplizierten" Tag zu entfernen, da eine neue Frage für eine gute Antwort erstellen ... Ich denke nicht, ist eine gute Idee. – MiguelHincapieC

Antwort

2

Aber für AndoirdViewModel Szenario kann ich Anwendungskontext erhalten, indem eine Klasse Application-Klasse erstreckt

Ihre eigene Unterklasse von Application Erstellen nicht auf magische Weise, dass Singleton-Instanz zu einem ViewModel zur Verfügung stellen.

Es ist möglich, eine benutzerdefinierte Unterklasse von Application zu erstellen, die ihre eigene getInstance()-Methode oder etwas hat, um das Singleton direkt verfügbar zu machen. Google mag dieses Muster nicht (und ich auch nicht), und deshalb lenkt Google die Entwickler nicht dazu, es zu verwenden.

Was ist der tatsächliche Unterschied zwischen ihnen in Android Development?

Ein ViewModel allein hat keinen guten Weg, um eine Context zu bekommen. AndroidViewModel liefert eine Application zur Verwendung als Context, und liefert speziell die Application Singleton, so dass wir sicher sind, dass die Context selbst kein Speicherleck darstellt.

Verwandte Themen