Сегодня я сделал еще немного тестов. И я обнаружил, что iOS на самом деле больше не приостанавливает работу приложения, пока оно находится в фоновом состоянии. Вот как я это тестирую.
while(true){
napLock.wait(timeout: .now() + napDelay)
looperLog.i("running")
}
Он работает в рабочем потоке. Когда приложение находится в фоновом режиме, iOS приостанавливает все действия этого приложения до iOS 13.5. Значит, в консоли больше не должно быть логов. Но после нескольких переключений между состоянием переднего плана и состоянием фона iOS перестает переводить это приложение в приостановленное состояние, поэтому приложение продолжает работать в фоновом режиме. Думаю, именно поэтому так много приложений, показывающих длительную фоновую активность на странице использования батареи. Поскольку все приложения находятся в фоновом состоянии, а не в приостановленном состоянии, система видит их работающими в фоновом режиме. Я не перешел на новый UIScreenDelegate
, поэтому я все еще использую AppDelegate
для управления окном и переходами. Если в нем есть какие-то новые функции, их не следует применять к моему приложению. Подобные вещи изменили весь жизненный цикл, но в примечаниях к выпуску об этом ничего не говорится. Есть ли новая реализация, когда приложение переходит в фоновое состояние? Как принудительно перевести мое приложение в приостановленное состояние?