ビューモデルのonClearedはいつ呼び出されるのですか?
質問
ViewModels はアクティビティ/フラグメントのライフサイクルに依存しないのでしょうか、それとも構成の変更だけなのでしょうか。いつ存在しなくなり、その後のonCleared()メソッドが呼び出されるのでしょうか。 ビューモデルは他のアクティビティと共有できますか?
状況です。
Activity1+viewModel1--->(rotation)--->Activity1+viewModel1
--->(launch Intent)--->Activity2+viewModel1
この共有は可能ですか、そしてそれは良い習慣ですか。
また、アプリのライフサイクルのコールバック、onPause->onStop->onDestroyは両者とも同じものなので
1.アクティビティが回転するのと
2.アクティビティが終了するとき
ViewModelはどのようにしてonClearedを呼び出し、最終的にそのライフサイクルを終了する適切なタイミングを内部的に把握しているのでしょうか。
検索 :
ViewModel は内部で holderFragment を使用してアクティビティのインスタンスを保持し、設定の変更を考慮するためにフラグメントのような setRetainInstance メソッドを使用します。
ソースはこちら dive-inside-of-androids-viewmodel-architecture-components (日本語)
どのように解決するのですか?
<ブロッククオートViewModels は、アクティビティやフラグメントのライフサイクルに依存しないのでしょうか? 構成が変更されるだけです。
ViewModels (VM) は設定の変更から独立しており、アクティビティ/フラグメントが破棄されるとクリアされます。
以下は ViewModel のライフサイクルです。 を公式サイトから引用しています。
viewModelは他のActivityと共有できますか?
アクティビティでそれを行うべきではありません。しかし、フラグメントは
ViewModel
を共有し、アクティビティスコープを使用してフラグメント間の通信を処理することができます。
ViewModel はどのようにして、内部的に適切なタイミングで
onCleared
を呼び出し、最終的にそのライフサイクルを終了させるための適切なタイミングを内部的にどのように把握するのでしょうか?
VMの
onCleared
は、アプリがバックグラウンドに置かれたときに呼び出され、システムのメモリを解放するためにアプリのプロセスを終了させます。
を参照してください。 ViewModelsは私のデータを持続させますか? のセクションを参照してください。 ViewModels。永続化、onSaveInstanceState()、UI状態の復元とローダー
ユーザーがアプリをバックグラウンドに置いて、3時間後にまったく同じ状態で戻ってこられるようにしたい場合、データも永続化する必要があります。これは、アクティビティがバックグラウンドに入るとすぐに、デバイスのメモリが不足している場合、アプリのプロセスを停止できるためです。
アプリプロセスとアクティビティが停止されると、ViewModelもクリアされます。
関連
-
[解決済み】Looper.prepare()を呼び出していないスレッド内でハンドラを作成できない。)
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] インスタンス状態の保存を使用してアクティビティ状態を保存するにはどうすればよいですか?
-
[解決済み] match_parentとfill_parentの違いは何ですか?
-
[解決済み] FragmentでonActivityResultが呼び出されない
-
[解決済み】「px」、「dip」、「dp」、「sp」の違いは?
-
[解決済み] Android - タイトルバーに戻るボタンが表示される
-
[解決済み] AsyncTaskを複数回実行する
-
[解決済み] アンドロイドのクライアントでヒープアップデートを有効にする方法
-
[解決済み] Recyclerviewと異なるタイプの行のインフレーションの処理
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 「KotlinとAndroidで「パラメータTを推測するのに十分な情報がありません。
-
[解決済み] Android Studio - あいまいなメソッド呼び出し getClass()
-
[解決済み] これはどういうことですか?失敗 [INSTALL_FAILED_CONTAINER_ERROR]?
-
[解決済み] Studio 3.4 をアップデートしたら、引数の leftShift() メソッドが見つかりませんでした。
-
[解決済み] Android - Snackbar vs Toast - 使い方と違い。
-
[解決済み] EditTextをReadOnlyにする
-
[解決済み] Gradleでビルドタイプを使用し、ContentProviderを使用する同じアプリを1つのデバイスで実行する。
-
[解決済み] キャンバスに複数行のテキストを描画する
-
[解決済み] サポートライブラリのアクションバーをPreferenceActivityに追加するには?
-
[解決済み] <string> XMLで改行やタブを作るには(eclipse/android)?