NSTimers работает в фоновом режиме?

У меня создалось впечатление, что NSTimer вообще не работал после того, как приложение вызывает applicationWillResignActive. Кажется, однако, что существующие NSTimers (т.е. Созданные до того, как приложение сработало активно) будут продолжать работать, и его только новые NSTimers, которые не могут быть запланированы в этом состоянии, могут подтвердить это?

Я также предполагаю, что это хорошо (и Apple, похоже, это тоже говорит), что, когда ваше приложение вызывает applicationWillResignActive, вы должны отключить любые NSTimers и запустить их снова, когда вызывается applicationDidBecomeActive, это имеет смысл?

Ответы

Ответ 1

Когда приложение неактивно, но все же на переднем плане (например, когда пользователь получает push-уведомление или нажимает кнопку ожидания), ваше приложение все еще работает полностью. Все созданные вами таймеры, которые вы не остановите, будут срабатывать как обычно. Однако, когда ваше приложение переходит в фоновый режим, если вы не зарегистрированы для запуска фонового потока, все выполнение останавливается. Если пришло время запуска таймера, это не произойдет, потому что цикл выполнения не запущен. Однако, когда ваша заявка возобновляется, все таймеры, которые должны были срабатывать, когда они были в фоновом режиме, будут немедленно запущены. Apple предлагает выполнить очистку в applicationWillResignActive, чтобы вы не выполняли много работы, когда пользователь не фокусировался на вашем приложении, но вы определенно хотите отключить таймеры перед тем, как идти в фоновый режим, чтобы они не запускали один за другим другой, когда ваша заявка будет вновь открыта.