Представьте себе следующий сценарий:
- Деятельность A имеет локальную переменную
state
и реализует onSaveInstanceState()
для ее сохранения.У него есть код для восстановления, если Bundle передан onCreate()
или onRestoreInstanceState()
. - Стек активности - A -> B -> C.
- A получил мусор, собранныйОС из-за нехватки ресурсов.
- От C, я прошу, чтобы A был выдвинут комбинацией
FLAG_ACTIVITY_CLEAR_TOP
и FLAG_ACTIVITY_SINGLE_TOP
.
Документы скажем, что это сочетание флага приводит к тому, что запрошенное действие не будет перезапущено.onNewIntent()
следует вызывать вместо существующего экземпляра.
Однако, очевидно, A необходимо перезапустить из-за GC.
Мой вопрос: будет ли переменная state
быть восстановленным?
Я вижу следующие способы, чтобы это произошло:
onCreate(Bundle savedInstanceState)
- это довольно точно, чтобы быть вызванным, но является ли Bundleодин сохраненный в onSaveInstanceState()
во время GC? onRestoreInstanceState(Bundle savedInstanceState)
- он вызывается?
Спасибо!