次のシナリオを想像してみてください。
- アクティビティAにはローカル変数があり、それを保存するために
state
実装されます。onSaveInstanceState()
バンドルが渡された場合、onCreate()
またはバンドルに含まれている場合に復元するコードonRestoreInstanceState()
があります。 - アクティビティスタックはA->B->Cです。
- リソースが少ないため、OSによって収集されたガベージ。
- Cから、との組み合わせでAを前倒しするようにお願いし
FLAG_ACTIVITY_CLEAR_TOP
ますFLAG_ACTIVITY_SINGLE_TOP
。
ドキュメントによると、このフラグコンボにより、要求されたアクティビティは再開されません。onNewIntent()
代わりに、既存のインスタンスで呼び出す必要があります。
ただし、GCのため、明らかにAを再起動する必要があります。
私の質問は:どういうわけか変数state
が復元されるのでしょうか?
私はそれが起こるために次の方法を見ることができます:
onCreate(Bundle savedInstanceState)
-これは確実に呼び出されますが、バンドルはonSaveInstanceState()
GC中に保存されたものですか?onRestoreInstanceState(Bundle savedInstanceState)
-呼び出されますか?
ありがとう!