Ответ: «Теоретически да, но обычно нет».
Приложения на самом деле имеют больше состояний, чем активное и фоновое.
Штаты:
- Активный
- Фон (все еще работает, но другое приложение находится на переднем плане)
- Приостановлено (в памяти, но не получает процессорного времени)
- Не бегать. (больше не работает или находится в памяти.)
Когда пользователь меняет приложения, нажимает кнопку «Домой» или блокирует свое устройство, ваше приложение получает уведомление о том, что оно переходит в фоновый режим, но на самом деле оно работает в фоновом режиме только ОЧЕНЬ короткое время. Он переходит в приостановленный почти сразу. После приостановки вы можете быть уволены в любое время без дополнительного уведомления.
Если вам нужно больше времени для завершения задачи, когда вы получаете уведомление о том, что вас переводят в фоновый режим, вы можете попросить об этом с помощью вызова beginBackgroundTaskWithExpirationHandler
. Однако на момент написания этой статьи вы получаете не более 3 минут, а затем срабатывает обработчик истечения срока действия, и ваше приложение приостанавливается.
В результате вы на самом деле не можете работать в фоновом режиме очень долго, и вполне вероятно, что к тому времени, когда пользователь заблокирует экран (или он заблокируется автоматически), вы уже приостановлены и не получаете уведомления.
person
Duncan C
schedule
21.12.2015