0

Android のドキュメントには、「アプリケーション内の 1 つのアクティビティが複数回インスタンス化される可能性がある」と記載されています。ここで、次のように仮定します。

  • onStart() を使用して状態を永続的なストレージに保存します
  • onStop() を使用して、永続ストレージから状態をロードします

ここで、メイン アクティビティの 2 つのインスタンス (inst1 と inst2) があり、次の呼び出しシーケンスがあるとします。

  1. inst1.onStart()
  2. inst2.onStart()
  3. inst1.onStop()
  4. inst2.onStop()
  5. inst1.onStart()

次に、これは、インスタンス #1 がインスタンス #2 の状態をロードすることになることを意味します。

これは可能なシナリオですか?はいの場合、どうすればこれを回避できますか?

編集:実際には、同じアクティビティの2つのインスタンスを同時に「実行中」状態にすることはできないため、このシナリオは不可能のようです。

4

1 に答える 1

2

「永続的なストレージ」が共有設定またはファイルを意味する場合は、そうです。を使用している場合はonSaveInstanceState、いいえ。メソッド名が示すように、これはインスタンスごとのメカニズムです。ドキュメントから:

「アクティビティからインスタンスごとの状態を取得してから、onCreate(Bundle) または onRestoreInstanceState(Bundle) で状態を復元できるようにするために呼び出されます (このメソッドによって設定された Bundle は両方に渡されます)
。...
デフォルトは実装は、インスタンスごとの UI状態のほとんどを処理します」

于 2012-11-27T10:49:05.340 に答える