2012-06-22 2 views
7

я в моем приложении NSRunLoop подключен к таймеру:Что происходит с моим NSRunLoop и таймером, когда приложение переходит в фоновый режим и возвращается?

NSTimer *updateTimer = [NSTimer scheduledTimerWithTimeInterval:300 target:self selector:@selector(onUpdateTimer) userInfo:nil repeats:YES]; 
[[NSRunLoop mainRunLoop] addTimer:updateTimer forMode:NSRunLoopCommonModes]; 

Когда приложение переходит в фоновый режим, что происходит с этим runloop? Он исчезает, то есть я должен воссоздать его в applicationDidBecomeActive:?

ответ

8

Вы должны остановить свои таймеры, когда ваше приложение приостановлено, и перезапустите их в -applicationDidBecomeActive:. См. «Что делать, когда происходит прерывание» в Responding to Interruptions. Вам не нужно беспокоиться о запуске цикла, однако - ОС позаботится об этой части.

+0

Хорошо, поэтому мне не нужно вручную останавливать runloop. Мне нужно создать его на applicationDidBecomeActive: используя тот же код? – DGund

+1

Нет. Попробуйте - ваш цикл (ы) запуска должен быть в порядке. – Caleb

+0

Имейте в виду, что призывы к приостановке и вызовы applicationDidBecomeActive необязательно пакетируются один за другим, поэтому не ставьте в очередь ничего по очереди в applicationDidBecomeActive без какого-либо интеллекта. – Gruntcakes

 Смежные вопросы

  • Нет связанных вопросов^_^