2012-04-28 2 views
0

Я использую эти функции в классе деятельности: onSaveInstanceState onRestoreInstanceState OnPause OnCreateAndroid: жизненный цикл, не onRestoreInstanceState вызывается, когда телефон повернулся

Когда пользователь запускает активность OnCreate вызывается, когда заканчивается пользователь, OnPause вызывается. До сих пор это прекрасно.

Но когда пользователь поворачивает телефон, OnPause onSaveInstanceState OnCreate вызывается. Я бы ожидал onRestoreInstanceState до onCreate. Почему это так и как я должен обрабатывать инициализацию ui-данных, если не существует?

ответ

3

Я бы ожидал onRestoreInstanceState перед onCreate.

documentation for onRestoreInstanceState() ясно сказано:

Этот метод вызывается после того, как OnStart(), когда активность повторного инициализируется из ранее сохраненного состояния, дается здесь в savedInstanceState. Большинство реализаций просто используют onCreate (Bundle) для восстановления своего состояния, но иногда удобно делать это здесь после завершения инициализации или разрешать подклассам решать, использовать ли вашу реализацию по умолчанию.

Если вы хотите инициализировать интерфейс с вещами из Bundle в onCreate(), не стесняйтесь делать это.

+0

документация говорит: «Этот метод вызывается после onStart(), когда активность повторно инициализируется из ранее сохраненного состояния, указанного здесь в файле savedInstanceState». Thats strge, потому что, когда я включаю телефон, вызывается вызовSaveInstanceState, но не этот метод. Мне нужен этот метод, потому что я хочу выделить между обычным стартом (новый init ui) и прерыванием, как поворот телефона (ui должен выглядеть так же, как и раньше) – user1324936

+0

@ user1324936: Правильно. Если ранее не было сохраненного состояния (т. Е. 'Bundle' передано' onCreate() 'is' null'), то 'onRestoreInstanceState()' не вызывается. – CommonsWare

+0

, когда телефон включен. Создание получает Bundle! = Null, если начато с scrach, Bundle имеет значение NULL. Как-то странно, что onRestoreInstanceState() никогда не называется – user1324936