Android — двойная последовательность жизненного цикла от альбомной до портретной

Я отслеживаю жизненный цикл Activity, чтобы узнать о нем больше, поэтому я добавляю вызов Log.d() почти в каждый метод цикла.

Я смотрю особенно последовательность:

[A]onSaveInstanceState() - onPause() - onStop() - onDestroy() - onStart() - [B]onRestoreInstanceState()

См. Жизненный цикл действия.

При переключении эмулятора 2.2 Froyo с помощью Ctrl-F11 с портретного на альбомный я вижу один раунд с [A] на [B].

Что странно для меня, так это то, что при переключении обратно с пейзажа на портрет я вижу два круга от [A] до [B].

onSaveInstanceState() - onPause() - onStop() - onDestroy() - onStart() - onRestoreInstanceState()
onSaveInstanceState() - onPause() - onStop() - onDestroy() - onStart() - onRestoreInstanceState()

Это создает мне много проблем при сохранении/восстановлении состояния активности.

Как это может быть? Почему это так?

Отредактировано: При использовании эмулятора Gingerbread 2.3.3 последовательность запускается только один раз. Но у эмулятора 2.3.3 есть известная ошибка, которая мешает ему правильно вращаться!


person Giorgio Vespucci    schedule 30.03.2011    source источник


Ответы (2)


Вращение в эмуляторе отличается от вращения ускорителя. Он фактически имитирует открытую клавиатуру. Это два разных события, которые вызывают два разных потока жизненного цикла.

person reflog    schedule 30.03.2011
comment
Согласно Использование эмулятора Android, существуют только Ctrl-F11/F12 для переключения на предыдущую/следующую ориентацию макета. Разве это не ключ вращения ускорителя? Как это можно эмулировать? Что это за разные потоки жизненного цикла? - person Giorgio Vespucci; 30.03.2011

Это происходит несколько раз на эмуляторах, проверьте это на реальном устройстве, на реальных устройствах оно работает правильно.

person sandeepmaaram    schedule 18.11.2013