OS の kill/restore アクティビティ (またはアプリ?) に関連するバグがあります。
いくつかのデバッグの後、find if setdon't keep activities
と set Background process limit
tono background process
は異なる動作を引き起こします。
この投稿を見ましたが、ここでの質問には答えていません。
これが観察されたものです:
アプリケーションでは、短剣コンポーネントを開始し、いくつかのアプリ スコープ シングルトン オブジェクトを維持します。アクティビティ A (デフォルトの起動アクティビティ) では、ユーザーのアクションによってアクティビティ B を起動し、B ではフラグメントを作成してホストします。フラグメントを操作するために、アプリ スコープ シングルトン オブジェクトにいくつかのデータが格納されます。
セットのみの場合don't keep activities
、アプリを最小化するとアクティビティ onDestroy() が呼び出され、アプリを再度開くと、最後のアクティブなアクティビティが復元されます (ユーザーがアクティビティ B を開いたとします。B は次のように再作成されます)。 savedInstanceState で復元されたフラグメント)。この場合、短剣によって管理されるアプリ スコープ シングルトン オブジェクトはまだ生きているため、状態はアプリを最小化する前の状態に完全に復元されます。
ただし、 と が両方ともdon't keep activities
に設定さBackground process limit
れているno background process
場合、アプリを最小化すると、アクティビティの onDestroy() は呼び出されません (onStop() まで呼び出すだけです)。
動作の変更は、この時点でアプリを再度開くと、アプリケーションの onCreate() から開始され、短剣のコンポーネントが再作成されます。そのため、アプリを最小化する前の状態は復元されません。
しかし、OSは最後のアクティビティがBであり、Bのものであることをまだ覚えているようです
onCreate(savedInstanceState: Bundle?)
アプリを最小化するときに保存されたデータを持つsavedInstanceStateで呼び出され、Bのフラグメントも同様です。
そして、それはめちゃくちゃで、savedInstanceState からのデータがありますが、アプリ スコープ シングルトン オブジェクトは、savedInstanceState からのものと連携するデータを持たない新しいものです。
この場合、savedInstance がどこに保存されているか、また、アプリケーションが再作成されたように見えても、最後のアクティビティ (起動アクティビティではない) が再保存されるのはなぜですか?