Возобновление работы приложения после перехода в фоновый режим

У меня есть приложение для iphone, предназначенное для Iphone 3G, 3GS и 4G. проблема, которая у меня есть, заключается в том, что поведение отличается от Iphone 3G и 4 (у меня не было возможности протестировать свое приложение на 3GS iphone).

разница в следующем:

на iPhone 4:

  1. Я запускаю свое приложение и играю нормально.
  2. Я нажимаю кнопку «Домой» на iPhone, поэтому приложение переходит в фоновый режим.
  3. когда я перезапускаю свое приложение, оно продолжается с последнего контекста выполнения.

на iPhone 3G:

  1. Я запускаю свое приложение и играю нормально.
  2. Я нажимаю кнопку «Домой» на iPhone, и приложение переходит в фоновый режим?!
  3. когда я перезапускаю свое приложение, оно перезапускается с того момента, как оно было запущено в первый раз.

Это способ иметь одинаковое поведение на всех устройствах Iphone?

Или я должен справиться с этим сам?


person simoscream    schedule 19.06.2011    source источник


Ответы (3)


В iOS4 добавлен фоновый запуск приложений, чего нет на iPhone 3G. В этих случаях вам нужно будет сохранить и восстановить состояние вручную.

Существуют классы, которые помогут вам в этом, например DTResurrectionKit, который находится на Github.

person Abizern    schedule 19.06.2011
comment
неправильный. В iPhone 3G нет фоновых приложений. Это всегда убивает приложения - person Blitz; 19.06.2011

Чтобы дать вам немного более длинное объяснение:

В iOS 4.0 Apple представила фоновые приложения. В фоновом режиме приложения, которые теряют передний план, приостанавливаются, но могут быть повторно активированы до той же точки, в которой они были, без каких-либо действий разработчика для этого. По сути, виртуальная машина приложений сохраняется, и тот же контекст создается заново. Однако фоновые приложения могут быть уничтожены в любое время, когда они работают в фоновом режиме.

Однако Apple убрала из этой картины несколько старых устройств, хотя они и получили 4.0. iPhone 3G и iPod Touch 2. Generation не включали фоновые приложения.

Поэтому, если вы хотите одинакового или хотя бы похожего поведения на всех устройствах, вам придется создавать собственные. В функции ApplicationWillTerminate: в вашем Appdelegate вам нужно будет сохранить текущую позицию/другую информацию, которая вам нужна, и воссоздать ее оттуда.

person Blitz    schedule 19.06.2011

Я думаю, вам не повезло с iPhone 3G, так как фоновые приложения поддерживаются только на устройствах, начиная с iPhone 3GS с iOS 4.x и выше. Конечно, ничто не мешает вам сохранить контекст приложения, когда приложение завершается и возобновляется при перезапуске.

Подтверждение функций iOS 4, поддерживаемых в 3G, можно найти здесь:

http://support.apple.com/kb/HT4204

person kharrison    schedule 19.06.2011