Приложения iOS работают в фоновом режиме?

15

Допустим, если я установлю на iPhone дюжину игр и утилит, а затем установлю такие приложения для чата, как WhatsApp, WeChat, Line, затем

  1. После перезагрузки iPhone все эти приложения могут запускаться и занимать ценное процессорное время и системные ресурсы?

  2. Что делать, если я запустил приложение, а затем дважды коснулся кнопки «Домой» и выдвинул приложение (чтобы выйти из него). Может ли он или его часть все еще работать в фоновом режиме сейчас или позже?

  3. Поскольку WhatsApp, WeChat, Line и Facebook Messages уведомляют меня о новых сообщениях, похоже, они будут запущены, как только я перезагружу свой iPhone. Они используют мой процессор в фоновом режиме? Кроме того, кажется, что даже если я отключу обновление приложения в настройках, приложения все равно могут работать в фоновом режиме . Это правда?

Одна большая проблема, если я установлю все варианты Angry Birds, несколько игр в рулетку для казино и все версии Cut the Rope и не буду удалять их (телефон имеет 128 ГБ памяти). Тогда все эти приложения будут запускаться во время перезапуска iPhone или просто случайным образом и занимать процессорное время и системные ресурсы (например, ОЗУ)?

nonopolarity
источник
1
Я опубликовал очень длинный справочник обо всем, что нужно знать здесь, я надеюсь, что это действительно поможет вам!
owlswipe
Помог ли мой ответ? Пожалуйста, примите это или скажите мне, что с ним не так, чтобы я мог сделать это лучше! :)
owlswipe

Ответы:

29

У Apple очень строгие правила относительно того, как и когда приложения могут работать в фоновом режиме.

Ниже приведены единственные сценарии, в которых стороннее приложение iOS может использовать процессор в фоновом режиме.

Background Fetch

Любое приложение может использовать «Фоновую выборку» (так называемое обновление фонового приложения) для извлечения контента в фоновом режиме в течение нескольких секунд, примерно один раз в день (на таймфрейме, регулируемом iOS, вне контроля разработчика). Background Fetch требует очень мало батареи и процессора и используется в основном в новостях / погоде / социальных сетях / почтовых приложениях для обновления вашего канала, чтобы при открытии приложения оно не было полностью устаревшим.

Аудио, передача голоса по IP, связь Bluetooth

Если приложение воспроизводит звук в фоновом режиме (через AirPlay или через динамики телефона), iOS разрешает запускать его в фоновом режиме до тех пор, пока оно не перестанет воспроизводить музыку; если приложение позволяет вам выполнять телефонные звонки на основе данных (например, звонки через Whatsapp или Skype) в фоновом режиме, оно может оставаться активным, используя ЦП на время звонка; и если приложение связывается с аксессуарами Bluetooth (например, приложение Pebble, связывающееся с умными часами Pebble), оно может постоянно бодрствовать в фоновом режиме.

Загрузка газетных киосков, удаленные уведомления

Приложения для газетных киосков (если они одобрены Apple в качестве крупной новостной организации и отображаются в разделе газетных киосков в App Store), разрешается загружать новый контент в фоновом режиме; Любое приложение (например, приложение «Нью-Йорк Таймс»), которому необходимо отображать уведомления, созданные вне приложения (например, уведомления о новостях), может бодрствовать в фоновом режиме, чтобы получать такие «удаленные» уведомления.

Обновления местоположения

Если вы разрешаете приложению «всегда» использовать ваше местоположение (то есть в фоновом режиме), то оно может быть активным в любое время в фоновом режиме. Такие приложения, как Facebook, Find Friends и другие, используют это для обновления информации о местоположении, хотя другие приложения могут использовать ее, чтобы незаметно использовать ее для выполнения задач в фоновом режиме (но только если вы специально разрешите им доступ к вашему местоположению).


Очень распространенное заблуждение , что «проводя вверх» на приложение , чтобы убить его останавливает его от работающих в фоновом режиме: это совершенно не соответствует действительности. Приложения, у которых есть одна из семи вышеуказанных причин для работы в фоновом режиме, могут работать в фоновом режиме, независимо от того, что вы их нажмете, а приложения, у которых нет одной из этих семи причин, не могут работать, когда они не работают. на экране, даже если вы не убиваете их.

Другое неправильное представление (которое у вас, похоже, есть!) Заключается в том, что отключение «Фоновое обновление приложения» остановит приложение в фоновом режиме; на самом деле, это только отключает приложение от использования Background Fetch, но оно может работать в фоновом режиме, если оно имеет одну из шести других причин, независимо от переключателя фонового обновления приложения.


Итак, приложения, которые вы установили, используют процессор, память, батарею или данные в фоновом режиме? Вы можете легко узнать! Зайдите Settingsна свой iPhone, найдите Batteryраздел и посмотрите. Если приложение показывает «Фоновая активность» под своим именем, то оно использует процессор в фоновом режиме; в противном случае он ничего не делал в фоновом режиме.

Вот пример скриншота:

введите описание изображения здесь

На этом iPhone Podcasts работает в фоновом режиме, но ни одно из других приложений не работает. Переход к настройкам батареи - это простой способ узнать, работает ли Angry Birds в фоновом режиме.


Итак, чтобы ответить на ваши вопросы напрямую:

После перезагрузки iPhone все эти приложения могут запускаться и занимать ценное процессорное время и системные ресурсы?

Только если они специально настроены для работы в фоновом режиме, вы можете проверить, выполняли ли они это в настройках батареи вашего iPhone.

Что делать, если я запустил приложение, а затем дважды коснулся кнопки «Домой» и выдвинул приложение (чтобы выйти из него). Может ли он или его часть все еще работать в фоновом режиме сейчас или позже?

Да. Например, если Facebook использует службы определения местоположения (как и он), то, если вы проведете пальцем вверх, чтобы убить приложение Facebook, не помешает ему использовать ваше местоположение в фоновом режиме, и пока оно использует ваше местоположение, оно может выполнять практически любую другую задачу в фон тоже.

Поскольку WhatsApp, WeChat, Line и Facebook Messages уведомляют меня о новых сообщениях, похоже, они будут запущены, как только я перезагружу свой iPhone. Использует ли мой процессор в фоновом режиме? Кроме того, кажется, что даже если я отключу обновление приложения в настройках, приложения все равно могут работать в фоновом режиме. Это правда?

WhatsApp, WeChat, Line, Hangouts, FB Messenger и другие приложения чата используют remote notificationsвозможность периодически проверять наличие новых сообщений в фоновом режиме. Это ожидаемое поведение (и вы можете проверить, насколько они это делают, проверив расход заряда батареи для каждого приложения, опять же в настройках «Батарея»), и не должно сильно разряжать батарею. И действительно, отключение обновления приложения для этих приложений не будет иметь никакого эффекта, так как приложения используют удаленные уведомления, а не фоновую выборку для работы в фоновом режиме.


TL; DR: приложения могут использовать ресурсы вашего телефона в фоновом режиме, вы можете видеть, как много они делают Settings-> Battery.


Источники информации:

owlswipe
источник
2
это довольно хорошо ... Вы можете процитировать любую ссылку / источник об этом?
неполярность
2
@ 太極 者 無極 而 生 Вся информация получена из моих личных знаний разработчика iOS, но я также добавил некоторые источники в конец моего ответа.
owlswipe
1
Отличный ответ. В качестве мелочи Apple отключила удаленные уведомления для принудительно закрытых приложений в iOS 7. Но так как люди, которые принудительно выбросили все свои приложения, жаловались на то, что не получали уведомления, это было возвращено в iOS 7.1 или 7.2.
2
@ Мне нравится, я этого не знал! Спасибо д.
owlswipe
3
Вы ошибаетесь в том, что принудительное завершение не связано с тем, могут ли приложения использовать фоновое выполнение. Apple on BE : «[iOS] не перезапускает приложения после ... принудительного выхода пользователем. Исключением являются приложения местоположения ... в iOS 8 и более поздних версиях ... [В противном случае] пользователь должен явно запустить [it] или перезагрузить компьютер ... до того, как приложение [будет] автоматически запущено в фоновом режиме [iOS]. "
tubedogg