2017-07-11 11 views
0

の違いはViewModelには、特定の活動およびフラグメントのインスタンスをoutlivesので、それはビューを参照することはありません何この質問を持つ人のためのViewModelとAndroidViewModel

、Androidのドキュメントを1として、

である、またはアクティビティコンテキストへの参照を保持できる任意のクラス。 ViewModelにアプリケーション・コンテキストが必要な場合(たとえば、システム・サービスを見つけるために)、AndroidViewModelクラスを拡張し、コンストラクタでApplicationを受け取るコンストラクタを持つことができます(ApplicationクラスはContextを拡張するため)。

マニュアルは、ここで見つけることができます: https://developer.android.com/topic/libraries/architecture/viewmodel.html

編集:重複する説明については : 私はあなたがのViewModelにクラスを拡張するだけでなく、AndroidViewModelできることを意味します。どちらを拡張すべきかは、上記の説明だけです。上記のリンク私のコメントに展開するには、一般的にMVVMアーキテクチャのViewModelにではなくandroid.arch.lifecycle.ViewModel

+0

あなたはViewModelとAndroidViewModelにクラスを拡張することができます。どちらを拡張すべきかは、上記の説明だけです。上のリンクは、MVVMアーキテクチャのViewModelについて一般的であり、android.arch.lifecycle.ViewModelではありません。 –

+0

@ M0CH1R0N:上記のコメントをお読みください。この投稿が重複していると感じたら、できるだけ早く削除します。ありがとう。 –

+0

私の悪い、私はあなたの質問を再読した。 AndroidViewModelはViewModelを継承しているので、すべての機能が同じです。 AndroidViewModelの唯一追加された機能は、コンテキスト認識であるということです。AndroidViewModelを初期化するときは、コンテキストとしてパラメータを渡す必要があります。たとえば、トーストを表示する場合に使用できます。 – M0CH1R0N

答えて

2

について伝えます:それはすべて同じ機能を持っているので、

AndroidViewModelは、ViewModelを拡張します。 AndroidViewModelの唯一追加された機能は、コンテキスト認識であることです。AndroidViewModelを初期化するときは、Applicationコンテキストをパラメータとして渡す必要があります。

これがなぜ便利なのかの例として、アプリケーションコンテキストが必要なトーストを表示できます。

関連する問題