У меня есть NSTimer, который проверяет последние данные с сервера каждые 15 секунд. Когда приложение переходит в фоновый режим, я останавливаю таймер в следующем методе делегата приложения.
- (void)applicationWillResignActive:(UIApplication *)application
Когда приложение снова становится активным, я активирую таймеры, и оно снова становится активным.
- (void)applicationWillEnterForeground:(UIApplication *)application
Эта функция отлично работает. Но когда я выхожу из айфона, он через некоторое время блокируется. Когда я разблокирую его, функциональность не работает должным образом. Таймер не работает.
Что я делаю не так?
Я не хочу, чтобы таймеры работали в фоновом режиме. Вот почему перед переходом в фоновый режим я отключаю таймер, а когда перехожу на передний план, я хочу перезапустить таймер.
2 ответа
Я думаю, вам может понадобиться дополнительный метод делегата, отличный от applicationWillEnterForeground. Я думаю, что когда пользователь разблокирует свой телефон, ваше приложение уже будет на переднем плане и не войдет в него. Но я не уверен, каким будет метод делегата, возможно, applicationDidBecomeActive
Именно так работает фоновая обработка Apple a> работает ...
Вы можете создать фоновую задачу, которая заставит NSTimer работать в фоновом режиме, НО они ограничены по времени, вы не можете заставить его работать всегда в фоновом режиме.
Похожие вопросы
Новые вопросы
iphone
НЕ ИСПОЛЬЗУЙТЕ этот тег, если вы не обращаетесь конкретно к iPhone и / или iPod touch от Apple. Для вопросов, не зависящих от оборудования, используйте тег [ios]. Больше тегов, которые нужно рассмотреть, это [xcode] (но только если вопрос касается самой IDE), [swift], [target-c] или [cocoa-touch] (но не [cocoa]). Пожалуйста, воздержитесь от вопросов, касающихся iTunes App Store или iTunes Connect. Если вы используете C #, пометьте [mono].