2017-08-04 11 views
3

ViewModelを使用してアクティビティやフラグメントの状態を保持し、savedInstanceStateバンドルで保存することとの違いを理解しようとしています。アーキテクチャコンポーネントViewModelとsavedInstanceStateバンドル

構成変更のような場合に、アクティビティ/フラグメントがosによって破棄されたときにViewModelインスタンスがアクティブに保たれているという印象を得ました。これにより、アクティビティ/フラグメントがまだ有効なViewModelインスタンス。

アプリを最小限に抑えて再度開いても問題ありませんか?

いくつかのテストは、アプリケーションを最小限に抑えて、アプリケーションを再オープンしているようですが、onSaveInstanceStae()が呼び出されたときに保存されたものではなく、onCreate() 。しかし、ViewModelはクリアされているので、新しいインスタンスは以前のもののデータなしで作成されます。

この場合、osは保存されたインスタンスの状態を取得してactivity/fragmentのonCreate()に渡すことはできますが、ViewModelは以前のインスタンスのデータを持たない新しいインスタンスである必要があります。インスタンスを横切るデータを格納/復元するためにいくつかの追加ステップが必要ですか?

+0

https://developer.android.com/topic/libraries/architecture/viewmodel.html#viewmodel_vs_savedinstancestate – vlazzle

答えて

4

in this blogpostの良い説明と問題解決方法があります。 TLDR:viewmodelは、永続化されたフラグメント内でホストされ、ホスティングアクティビティとともに再作成されます。

+0

@fedpaol、迅速な対応とリンクをお寄せいただきありがとうございます。 – lannyf

関連する問題