1

この疑問をお持ちの方へ、

Androidのドキュメントによると、

ViewModel は特定のアクティビティとフラグメントのインスタンス化よりも長く存続するため、View や、アクティビティ コンテキストへの参照を保持する可能性のあるクラスを参照することはできません。ViewModel が Application コンテキストを必要とする場合 (たとえば、システム サービスを見つけるため)、AndroidViewModel クラスを拡張し、コンストラクターで Application を受け取るコンストラクターを持つことができます (Application クラスは Context を拡張するため)。

ドキュメントはこちらにあります: https://developer.android.com/topic/libraries/architecture/viewmodel.html

編集:説明の重複について:クラスをViewModelとAndroidViewModelに拡張できることを意味します。which を拡張する必要がある場合、上記の説明はそのためのものです。上記のリンクは、android.arch.lifecycle.ViewModel ではなく、一般的な MVVM アーキテクチャの ViewModel について説明しています。

4

1 に答える 1

15

私のコメントを拡張するには:

AndroidViewModelextendsであるため、ViewModelすべて同じ機能を備えています。AndroidViewModel に追加された唯一の機能は、コンテキストに対応していることです。AndroidViewModel を初期化するときに、Applicationコンテキストをパラメーターとして渡す必要があります。

これが役立つ理由の例として、アプリケーション コンテキストを必要とするトーストを表示できます。

于 2017-07-11T06:49:16.133 に答える