Какой метод жизненного цикла вызывается при изменении ориентации?
Мое приложение выполняет метод onResume()
или, возможно, перезагружает всю активность, потому что я установил одно логическое значение, чтобы проверить, запускается он или нет. Я прочитал начало onConfigurationChanged()
, когда происходит изменение ориентации, верно ли это?
Как справиться с этим?
Какой метод активности вызывается при изменении ориентации?
Ответ 1
Интересный...
Действие начинается onResume()
, которое вы объявляете в своем XML по умолчанию.
И как я нашел из вопроса ответ на переполнение стека:
Изменение ориентации
- onSaveInstanceState
- OnPause
- OnStop
- OnCreate
- OnStart
- onRestoreInstanceState
- onResume
Переключиться на операцию 2
- onSaveInstanceState
- OnPause
Изменение ориентации WHILE IN Activity 2
- OnStop
- OnCreate
- OnStart
Отключение BACK FROM Activity2
- onResume
Я предполагаю, что поскольку действие 1 скрыто во время вращения, onRestoreInstanceState
не вызывается, потому что нет "представления" (т.е. его нельзя увидеть/просмотреть). Кроме того, вполне возможно иметь 2 совершенно разных файла макета для портрета/пейзажа, которые потенциально могут иметь разные элементы пользовательского интерфейса с разными идентификаторами.
В результате я бы сказал, если вы хотите использовать Bundle в onSaveInstanceState
, чтобы сохранить свои собственные данные, тогда вам нужно добавить дополнительную логику в onCreate
(в действии 1) для обработки ваших собственных данных там (так же как это делается условно в onRestoreInstanceState
).
В частности, вы могли бы сохранить поле "последней известной" ориентации, чтобы onCreate
знал, что ему нужно обработать ваши собственные данные, потому что ориентация изменилась, а не полагаться на вызываемый onRestoreInstanceState
.