iOS останавливает перевод приложений в приостановленное состояние в iOS 13.5.1 (продолжает работать в фоновом режиме) - PullRequest
2 голосов
/ 16 июня 2020

Сегодня я сделал еще немного тестов. И я обнаружил, что iOS на самом деле больше не приостанавливает работу приложения, пока оно находится в фоновом состоянии. Вот как я это тестирую.

while(true){
    napLock.wait(timeout: .now() + napDelay)
    looperLog.i("running")
}

Он работает в рабочем потоке. Когда приложение находится в фоновом режиме, iOS приостанавливает все действия этого приложения до iOS 13.5. Значит, в консоли больше не должно быть логов. Но после нескольких переключений между состоянием переднего плана и состоянием фона iOS перестает переводить это приложение в приостановленное состояние, поэтому приложение продолжает работать в фоновом режиме. Думаю, именно поэтому так много приложений, показывающих длительную фоновую активность на странице использования батареи. Поскольку все приложения находятся в фоновом состоянии, а не в приостановленном состоянии, система видит их работающими в фоновом режиме. Я не перешел на новый UIScreenDelegate, поэтому я все еще использую AppDelegate для управления окном и переходами. Если в нем есть какие-то новые функции, их не следует применять к моему приложению. Подобные вещи изменили весь жизненный цикл, но в примечаниях к выпуску об этом ничего не говорится. Есть ли новая реализация, когда приложение переходит в фоновое состояние? Как принудительно перевести мое приложение в приостановленное состояние?

1 Ответ

1 голос
/ 15 июля 2020

Мы тоже видим это в нашем приложении. Единственное решение, которое мы нашли до сих пор, - это вручную останавливать вещи, которые выполнялись по таймеру / расписанию, которые обычно просто обрабатывались приложением, приостановленным ОС. Надеюсь, Apple скоро выпустит исправление для этого ...

...