Будет ли приложение перезапущено после того, как приложение выйдет в фоновом режиме - PullRequest
0 голосов
/ 25 августа 2018

Если я отправлю свое приложение на background , нажав кнопку домой и подожду определенное время (возможно, 1 или 2 часа).

Что произойдет, если я сейчас коснусь значка приложения?

Будет ли приложение перезапущено или просто перенесено с фона на передний план ?

Ответы [ 2 ]

0 голосов
/ 02 сентября 2018

Всякий раз, когда мы нажимаем кнопку «Домой» на нашем устройстве, приложение освобождает используемую в данный момент память и переходит в фоновый режим.Однако, когда мы снова нажимаем значок приложения, оно выводится на верхнюю часть экрана iPhone и снова занимает память.Это определенно не повторный запуск, поскольку повторный запуск зависит от метода UIApplicationDelegate didFinishLaunchingWithOptions .Когда мы переключаем приложение с фона на передний план, запускается метод applicationWillEnterForeground .

Для лучшего понимания может пригодиться следующая ссылка

Жизненный цикл приложения iOS

0 голосов
/ 25 августа 2018

Быстрый "пролог":

Добро пожаловать в удивительный мир переполнения стека (SO), я сам здесь довольно нов, но нашел, что гораздо удобнее использовать приветствовать вас в любом случае!

На всякий случай, если вы этого не сделали: Прежде чем задавать вопрос, пожалуйста, осмотрите немного на SO, если кто-то еще спросил то же самое, но если вы не можете получить ответ на свой вопрос, тогда вы должны Конечно, задайте свой вопрос.

Ответ:

На этот вопрос нет однозначного ответа, потому что это зависит. Когда вы нажимаете кнопку «Домой», ваше приложение входит, как вы сказали, в фоновый режим и все еще работает в определенной степени. Однако после этого жизненный цикл приложений определяется iOS (операционной системой устройств). iOS контролирует и проверяет использование памяти и ЦП (и т. д.) устройства, и если вы запускаете другое действие, когда ваше приложение находится в фоновом режиме, что делает доступную память и ЦП и т. д. устройства недостаточным, iOS завершит любые приложения в фон, чтобы не тратить эти ресурсы (или батареи и т. д.). Если это так, ваше приложение будет перезапущено при следующем нажатии.

Хотя, если вы ничего не делаете с высокой производительностью, более вероятно, что iOS поддерживает ваше устройство в фоновом режиме.

Я не уверен в точных условиях и на таких iOS работает, но я бы сказал, что вполне вероятно, что ваше приложение будет остановлено и перезапущено через 1 или 2 часа "в фоновом режиме". Дополнительные условия применяются, если устройство заблокировано в течение этого периода.

Для надлежащей документации по этому вопросу я бы рекомендовал прочитать Документацию Apple для обработки изменений состояния приложения и / или API для UIApplicationDelegate на веб-сайте apple для разработчиков. Где вы можете увидеть, что делают различные методы в AppDelegate и как они взаимодействуют.

Редактировать (ответить на комментарий):

  1. Как перезапустить приложение каждый раз, когда оно переходит в фоновый режим?

    • Хм, да, но тоже нет. Я не уверен на 100% в этом (никогда раньше не сталкивался с этим «желанием»), но вы можете сделать это в своем AppDelegate: (Это в основном приведет к сбою вашего приложения, но будьте осторожны, что Apple не поощряет вас к сбою собственного приложения в любом месте). ). Это может помешать приложению пройти процесс проверки в Apple Store (т. Е. Ваше приложение может быть не принято в App Store).

      func applicationDidEnterBackground(_ application: UIApplication) {
           exit(0)
      }
      
    • Ознакомьтесь с ответом на этот пост для получения дополнительной информации: вызов выхода (0) в приложении iphone , objc - Правильный способ выхода из приложения iPhone? .

    • Лично я бы порекомендовал вам обойти это и не делать этого. Также помните, что когда ваше приложение войдет в фоновый режим, будет вызываться applicationWillResignActive, а когда пользователь снова откроет его, вызывается applicationDidBecomeActive, чтобы вы могли выполнить перезагрузку или что-то оттуда, если вы хотите обновить любые данные.

...