iPhone - быстрое переключение приложений и iOS 4 - PullRequest
4 голосов
/ 15 ноября 2010

Я пытаюсь получить следующие функциональные возможности в своем приложении для iPhone:

  • При фоновом режиме продолжает работать (не требуется выполнять фоновую работу)
  • При возобновленииприложение начинает с того места, где оно было остановлено

В основном я хочу, чтобы в моем приложении все еще работал один и тот же экран, поскольку в UITabBarController есть несколько UINavigationController.

Я сделалвсе следующее:

  • Убедитесь, что я компилирую с SDK 4.1
  • Установите для UIApplicationExitsOnSuspend значение false
  • Обрабатывайте DidEnterBackground и WillEnterForeground в моем AppDelegate
  • Вызовите BeginBackgroundTask в DidEnterBackground, чтобы попытаться сохранить мое приложение открытым

Я использую MonoTouch, но это, вероятно, не относится к делу.Я могу получить ответы в Obj-C, конечно.

Я протестировал свое приложение на взломанном телефоне с Backgrounder, и я вижу, что значок «приложение в фоне» исчезает сразу после нажатия кнопки «Домой».Я также попытался установить UIBackgroundModes в моем Info.plist, но безрезультатно.

Есть ли что-то, что я пропускаю?

Или это то, что мне нужно было бы реализовать самостоятельно, чтобы возобновитьпредыдущее состояние моего приложения?Везде, где я читал доклады, вроде бы, они должны работать автоматически.

Ответы [ 4 ]

1 голос
/ 02 декабря 2010

Я наконец-то связался с кем-то по IRC MonoTouch.

В MonoDevelop есть возможность сделать двойной проект iPad / iPhone, который я использовал.Это заставляет мое приложение вести себя так, как будто оно работает с 3.2 SDK при развертывании на устройстве.

Я думаю, что мое решение состоит в том, чтобы установить iOS 4.2 SDK, который только что вышел, так как это рекламирует новыйособенность задач на iPad.

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

Когда я обновился до iOS 4.x, мое приложение MT начало демонстрировать это поведение без необходимости что-либо делать. iOS должен позаботиться об этом за вас.

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

Если вы не хотите выполнять работу в фоновом режиме, не вызывайте beginBackgroundTask.Этот вызов предназначен для ситуаций, когда вы хотите выполнить какую-то работу в фоновом режиме.И если вы не закончите эту работу достаточно быстро, iOS закроет ваше приложение.

0 голосов
/ 16 ноября 2010

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

...