Интересный ...
Активность начинается onResume()
- это то, что вы объявляете в своем XML по умолчанию.
И, как я обнаружил из вопроса, ответ на переполнение стека:
Изменение ориентации
- onSaveInstanceState
- onPause
- onStop
- onCreate
- onStart
- onRestoreInstanceState
- onResume
Переключиться на действие 2
- onSaveInstanceState
- onPause
Изменение ориентации WHILEIN Activity 2
Переключение НАЗАД ИЗ Activity2
Я предполагаю, что поскольку действие 1 скрыто во время поворота, onRestoreInstanceState
не вызывается, потому что нет «вида» (т. Е. Его нельзя увидеть / просмотреть).Кроме того, вполне возможно иметь 2 совершенно разных файла макета для портрета / пейзажа, которые потенциально могут иметь разные элементы пользовательского интерфейса с разными идентификаторами.
В результате я бы сказал, если вы хотите использовать Bundle в onSaveInstanceState
, чтобы сохранить свои собственные данные, затем вам нужно добавить дополнительную логику в onCreate
(в Деятельности 1) для обработки ваших собственных данных там (а также сделать это условно в onRestoreInstanceState
).
В частности, вы можете сохранить «последнее известное» поле ориентации, чтобы onCreate
знал, что ему нужно обрабатывать ваши собственные данные, поскольку ориентация изменилась, а не полагаться на то, что onRestoreInstanceState
вызывается.