現時点では、Android のライフサイクル管理について少し混乱しています。アクティビティがフォアグラウンドに戻った後、保持されたデータを再開するには、少なくとも 4 つの可能性があります。
Android の処理:十分なメモリがある場合、アクティビティの再起動後、Android は重要なデータ (チェックされたラジオ ボタン、EditText のテキストなど) を保存して再開します。ユーザーは、アクティビティが開始されたときと同じ状態になります。バックグラウンド。
onPause、onResume: onPause をオーバーライドし、重要なデータをデータベースまたはテキスト ファイルに保存し、次回の onResume 実行時に再開します。
onSavedInstance(Bundle)、onRestoreInstance(Bundle):データをキーと値のペアとしてバンドルに保存し、onRestoreInstance の実行後にそれらを復元できます。
onRetainNonConfigurationInstance()、getLastNonConfigurationInstance():ストレージの問題をすべて 1 つの大きなオブジェクトで処理し、onCreate の実行時に getLastNonConfigurationInstance() を読み取ります。
どのアプローチが最適かは混乱しますが、いつどの可能性を使用するかを知るには、開発経験に依存していると思います。それぞれの良い例があればうれしいですが、これは私の質問ではありません。さまざまなアクティビティがあり、バックグラウンドで一時停止すると Android によって 1 つのアクティビティが強制終了される場合、これらすべてにどのように対処すればよいのでしょうか。
私の場合、MainActivity と MessageActivity があります。MessageActivity は、2 つの状態で構成される ViewSwitcher で構成されます。状態 1 は、ラジオ ボタンの選択リストです。状態 2 は、2 つのボタン (送信と中止) を持つ EditText です。各状態をモンキーテストし、Android のホームボタンを押してアプリケーションを再起動すると、適切な状態の適切なアクティビティと古いデータがフォアグラウンドになり、処理を Android に任せます。それでうまくいきます。
しかし、Android がバックグラウンドで MessageActivity を破棄するとどうなるか: Android の方法を使用すると、データが失われ、次にアプリケーションを再起動した後に (MessageActivity->state(1 または 2) ではなく) MainActivity が開始されると思います (それは正しいですか?)。したがって、MessageActivity のデータを保持したい場合は、他の 3 つの可能性のいずれかを使用する必要があります。
アプリケーションのエントリ ポイント (つまり MainActivity) が最後のアクティブなアクティビティと異なる場合に、これを適切に行う方法。問題は、ViewSwitcher の特別な状態で特別なアクティビティを再開する必要があることです。onStart() または onResume() メソッドで startActivity(Intent) を使用して MainActivity から MessageActivity を開始できますが (MainActivity がおそらくエントリ ポイントであるため)、ライフサイクル管理で多くの論理的な問題が発生します。この事実のため、これが正しい方法だとは思いません。
しかし、それを行うための正しくて最良の方法は何ですか?