Только приложение WillResignActive вызывается, когда iPhone выключается? - PullRequest
8 голосов
/ 08 ноября 2010

Привет эксперты,

Я проверил, что происходит с моим приложением, когда iPhone выключен , когда приложение активно.Для этого я зарегистрировал методы обратного вызова жизненного цикла приложения в консоли отладчика xcode.

Результат был: Когда я нажимаю кнопку включения / выключения устройства в течение некоторого времени, вызывается applicationWillResignActive.IPhone показывает возможность выключить устройство на экране.Если я не знаю, выключить ли это, iPhone выключается.Но, с другой стороны, никакие дополнительные методы обратного вызова, такие как applicationDidEnterBackground или applicationWillTerminate, не называются .В результате все данные будут потеряны, если я не сохраню их в applicationWillResignActive.Хотя в Руководстве по программированию приложений для iOS сказано, что данные приложения следует сохранять в applicationDidEnterBackground и applicationWillTerminate.

Как вы думаете, это один из двух методов, которые до сих пор называютсятолько больше не печатается в консоли?

С уважением

Ответы [ 3 ]

3 голосов
/ 14 ноября 2010

Я провел еще несколько тестов:

Я сохранил вызванные методы жизненного цикла в базе данных и выключил iPhone, пока приложение работало. На самом деле вызывается только applicationWillResignActive. Но после выключения мое приложение находится в состоянии "не работает", потому что при запуске оно вызывает вызовы application:didFinsihLaunchingWithOptions: и applicationDidBecomeActive.Поэтому данные приложения будут потеряны, если я не сохраню их в applicationWillResignActive.

Если батарея разряжена во время работы приложения applicationDidEnterBackground и applicationWillTerminateназываются (без вызова applicationWillResignActive!).

1 голос
/ 10 ноября 2010

Я думаю, что ваш тест, вероятно, правильный.Приложение больше не активно, но оно не ушло в фоновый режим - как при входящем звонке - так что я думаю, что уведомления имеют смысл.

Что с этим делать?Мое предложение будет ничего.Мне кажется, что это событие случается так редко, что о нем не стоит беспокоиться.Если вы хотите использовать пояс и фигурные скобки, сохранение состояния в applicationWillResignActive должно работать до тех пор, пока не будет много места для хранения.

0 голосов
/ 08 июня 2012

Я проверял это.Это порядок, в котором вызываются методы.

  1. applicationWillResignActive - Когда пользователь долго удерживает кнопку блокировки на устройстве (и отображается слайдер, запрашивающий у пользователя «Слайд для отключения»

Если вы скользите, устройство будет вызывать следующие два метода в вашем приложении в следующем порядке:

  1. applicationDidEnterBackground

  2. applciationWillTerminate

Устройство выключится.

Я предполагаю, что то же самое происходит, когда батарея разряжается.

Это было протестировано на 3Gs под управлением iOS 5.0

Надеюсь, это поможет.

...