5

Bundleは、アクティビティ間でデータを渡したり、画面の回転などの構成変更があった場合にデータを保存して復元するために使用できます。バンドルはどのくらい持続しますか?

また、Bundleではなく、永続データを格納するのに好ましい方法はSharedPreferencesです。

これはどうしてですか? Bundleが構成の変更を処理するためには、アクティビティが破棄された後でさえも保持する必要があります。だから、正確にはBundleの寿命は何ですか?ガベージコレクションによって任意に削除される特定のポイントがありますか、または手動でクリアすることを選択しない限り、Bundleのデータは持続しますか?

答えて

1

Bundleは別名、それが終了していない、持続します。注意すべき

興味深い事実は、(onCreate()が呼ばれた)プロセス死が発生し、Androidのアプリケーションを虐殺し、Applicationクラスが再作成されたときに、[アクティビティスタックが再構築されていることで、活動はsaveInstanceStateバンドルから再初期化されます。

SharedPreferencesは、正しい場所を覚えていれば、data/<applicationname>/preferencesフォルダーにXMLファイルで指定したデータを文字通り保存します。

+0

アクティビティはいつ終了しますか?私は活動が破壊された時ではないことを知っています。また、ユーザーがアプリを終了するために押したときに、そのバンドルがリセットされるようです。それで、ユーザーが手動でアプリを終了したときにアクティビティが終了したと言うのは正しいでしょうか? – ryye

+0

アクティビティは**終了しています**アプリケーションを強制的に停止するか、ユーザが '戻る 'ボタンを押すと、' onBackPressed() '実装は' finish() 'メソッドを呼び出します。 'onPause()'、 'onStop()'、 'onDestroy()'メソッドで 'isFinishing()'メソッドを使ってアクティビティが終了しているかどうかを知ることができます。 – EpicPandaForce

2

SharedPreferencesは、単純な永続的な設定の保存のためのものです。ユーザーがアプリを開くたびに利用できるはずのブラウザのホームページと同じです。これらは単純なものを保持するために設計されたキー:値ペアです。

Bundleは、データを別のコンテキスト(別のアクティビティ、サービスなど)に渡すか、onSaveInstanceStateとonRestoreInstance状態で自分の現在の状態を保存して復元する方法です。このデータは、NOTであり、アプリケーションの使用中は永続的に使用されます。活動が存在している間

+1

バンドルonRestoreInstance時に復元するために使用することができた場合でも、それは右、アクティビティのonDestroyを過ぎて持続しなければなりませんでしたか?データは永続的なものとはみなされませんか? – ryye

+0

アプリケーションが実行されている限り。アプリケーションが破棄されると、バンドルデータも破棄されます。 – Shahzeb

関連する問題