iPhone - быстрое переключение приложений и iOS 4

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

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

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

Я сделал все из следующего:

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

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

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

Я что-то пропустил?

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

4 ответа

Решение

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

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

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

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

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

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

Другие вопросы по тегам