Arhn - архитектура программирования

iPhone: Как правильно выйти из приложения?

Привет всем,

с iOS 4 iPhone поддерживает многозадачность, что очень приятно, но я не хочу поддерживать это в моем приложении. Я имею в виду, что когда пользователь нажимает кнопку «Домой», я хочу, чтобы мое приложение заканчивалось, а не входило в фоновый режим. В iOS 4, когда пользователь нажимает кнопку «Домой», приложение вызывает метод делегата applicationDidEnterBackground: для входа в фоновый режим и для «принудительного завершения» приложения, когда пользователь нажимает кнопку «домой», я сделал следующее. выполнение:

- (void)applicationDidEnterBackground:(UIApplication *)application {
        //save everything...
    exit(0);
}

ПРОБЛЕМА: Я заметил, что exit (0) немедленно завершает приложение, без вызова методов освобождения, таких как «dealloc», и я думаю, что это плохой стиль программирования. Итак, я хотел бы спросить вас, ребята, как довести приложение до конца «лучше».

Заранее спасибо.

22.08.2010


Ответы:


1

На самом деле вам нужно не выходить из приложения (что, как уже упоминалось, не разрешено), а сообщить ОС, что вы бы предпочли, чтобы ваше приложение было убито, а не заблокировано.

Для этого есть ключ info.plist, UIApplicationExitsOnSuspend. Установите это в вашем info.plist на TRUE (отмечено), а затем, когда ваше приложение перейдет в фоновый режим, оно будет остановлено.

22.08.2010
  • Это правильно, но почему бы вам не поддерживать хотя бы быстрое переключение приложений? Это помогает пользователю, и его несложно реализовать. Помните, что быстрое переключение приложений не требует циклов процессора и не расходует заряд батареи. Приложение не запущено, оно просто зависло в памяти. Пусть ОС решит, когда ее полностью убить. Это достаточно умно. 22.08.2010
  • Спасибо Helmstetter и Pumbaa80 за ваш ответ, вы дали мне лучший ответ, чем я ожидал. И да, это логическое значение в Info.plist у меня сработало. @Joost Schuur: да, я мог бы, но это не изменит всего: когда программа становится активной или завершает загрузку, она должна загрузить xml с сервера, чтобы показать его содержимое. Так что реализация многозадачности не составит большого труда. Многозадачность зависит от ваших целей и дизайна. 22.08.2010
  • Вам следует перестать думать об этом как о «многозадачности». Быстрое переключение приложений - это повышение скорости отклика приложений, когда вы возвращаетесь к нему после того, как перешли на другое приложение. Как скоро эти XML-данные, которые вы загружаете, устареют? Если кто-то загружает ваше приложение, проводит в нем 30 секунд, проверяет электронную почту, а затем возвращается к ней, разве вы не можете использовать старую копию данных? Зачем перезагружать его снова, когда приложение перезагружается с нуля? Это не о запуске приложения в фоновом режиме. Речь идет об опыте стартапа. 22.08.2010

  • 2

    Это два вопроса:

    1. Как программно выйти из приложения iPhone - дубликат

      Как правильно выйти из приложения iPhone?

    2. Как заставить приложение iPhone не переходить в фоновый режим в iOS4:

      Добавьте ключ UIApplicationExitsOnSuspend в свой info.plist и установите для него значение YES http://developer.apple.com/iphone/library/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple_ref/doc/uid/TP40009252-SW23

    22.08.2010

    3

    Один из приведенных выше ответов гласит: «Для этого есть ключ info.plist, UIApplicationExitsOnSuspend. Установите для него в info.plist значение TRUE (отмечено), а затем, когда ваше приложение перейдет в фоновый режим, оно будет остановлено». с Xcode 4 значение info.plist - «Приложение не работает в фоновом режиме» типа Boolean, поэтому установка значения YES приведет к выходу приложения, когда пользователь нажимает кнопку «домой».

    18.07.2011

    4

    Вам не разрешено. Я знаю по опыту: получил отклонение приложения от Apple, потому что я ушел (это было два с половиной года назад, но я сомневаюсь, что они изменили свою политику здесь). В UIApplication, IIRC, есть «частный» (т.е. не упомянутый в файле заголовка) метод «terminate». Но Apple говорит, что вы не можете этого делать. Единственное, что вы можете сделать, - это показать диалоговое окно, предлагающее пользователю нажать кнопку «Домой». Но, в свою очередь, не работает, если на устройстве с включенной многозадачностью ... поэтому я думаю, вам действительно нужно изменить свое приложение таким образом, чтобы вы могли выбросить свое состояние в applicationDidEnterBackground и заново запустить приложение в applicationDidBecomeActive.

    22.08.2010
  • На самом деле, нам разрешено исключать приложения из фоновой функции в iOS 4 - это вопрос того, как именно это делать. См. Вопросы об обмане, указанные выше. 22.08.2010
  • Я пока видел две игры с кнопками выхода, и я очень ненавижу программы для этого. Но вам не обязательно поддерживать многозадачность. 22.08.2010
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..