0

このトピックについては他にもたくさんの質問がありますが、私はこの問題を理解することができませんでした。

Androidのドキュメント(http://developer.android.com/training/basics/activity-lifecycle/recreating.html)には、次のように記載されています。

デフォルトでは、システムはBundleインスタンスの状態を使用して、アクティビティレイアウト内の各Viewオブジェクトに関する情報(EditTextオブジェクトに入力されたテキスト値など)を保存します。したがって、アクティビティインスタンスが破棄されて再作成された場合、レイアウトの状態は、コードを必要とせずに以前の状態に復元されます。

そこで、EditTextビューを含むビューを作成するだけで、エミュレーターでこれをテストしました。次に、情報を入力してホームボタンを押します。アプリを再度開くと、情報が失われます。これは自動的に持続されるべきではありませんか、それとも何かが足りませんか?

4

1 に答える 1

1

あなたは部分的に間違っていて、部分的に正しいです。灰色の引用は文脈から外されているため、あなたは間違っています。あなたが提供したリンクから正しい引用をすることで、簡単に説明します。

ユーザーが [戻る] を押すか、アクティビティが終了したためにアクティビティが破棄された場合、アクティビティが不要になったことを動作が示しているため、そのアクティビティ インスタンスのシステムの概念は永久に失われます。ただし、システムの制約により (通常のアプリの動作ではなく) アクティビティが破棄された場合、実際のアクティビティ インスタンスはなくなりますが、システムはそれが存在していたことを記憶しており、ユーザーがそこに戻ると、システムは新しいアクティビティを作成します。アクティビティが破棄されたときの状態を記述する一連の保存済みデータを使用するアクティビティのインスタンス。

さて、その段落の後に明確化があります:

注意:ユーザーが画面を回転させるたびに、アクティビティが破棄され、再作成されます。画面の向きが変わると、システムはフォアグラウンド アクティビティを破棄して再作成します。これは、画面構成が変更され、アクティビティが代替リソース (レイアウトなど) を読み込む必要がある場合があるためです。

別のもの、以下のいくつかの行は次のとおりです。

アクティビティの状態に関する追加データを保存するには、onSaveInstanceState() コールバック メソッドをオーバーライドする必要があります。システムは、ユーザーがアクティビティを離れるときにこのメソッドを呼び出し、アクティビティが予期せず破棄された場合に保存される Bundle オブジェクトを渡します。システムが後でアクティビティ インスタンスを再作成する必要がある場合は、同じ Bundle オブジェクトを onRestoreInstanceState() メソッドと onCreate() メソッドの両方に渡します。

このバンドル (Bundle savedInstanceState) は、アプリケーションが誤ってクラッシュした場合、または画面の回転が有効になっている場合 (いくつか例を挙げると) に使用されます。

次のセクション「アクティビティの状態を保存する」も参照できますが、こちらのリンクをお勧めします

于 2013-02-08T10:27:14.190 に答える