Какого состояния ожидать от активности GC, возобновленной объединением FLAG_ACTIVITY_CLEAR_TOP и FLAG_ACTIVITY_SINGLE_TOP? - PullRequest
0 голосов
/ 08 августа 2011

Представьте себе следующий сценарий:

  • Деятельность 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) - он вызывается?

Спасибо!

...