2012-06-22 25 views
7

Mam NSRunLoop w moim app połączony z zegarem:Co stanie się z moim NSRunLoop i licznikiem czasu, gdy aplikacja znajdzie się w tle i wróci?

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

Gdy aplikacja przechodzi w tle, co się dzieje z tym runloop? Czy to zniknie, co oznacza, że ​​powinienem odtworzyć go w applicationDidBecomeActive:?

Odpowiedz

8

Powinieneś zatrzymać liczniki czasu, gdy aplikacja jest zawieszona, i zrestartuj ją w -applicationDidBecomeActive:. Zobacz "Co należy zrobić po wystąpieniu przerwy" pod numerem Responding to Interruptions. Nie musisz się jednak martwić o pętlę uruchamiania - system operacyjny zajmie się tą częścią.

+0

W porządku, więc nie trzeba ręcznie zatrzymywać pętli. Czy będę musiał go utworzyć na applicationDidBecomeActive: używając tego samego kodu? – DGund

+1

Nie. Wypróbuj - pętla (y) uruchamiania powinna być w porządku. – Caleb

+0

Należy pamiętać, że wywołania zawieszone i wywołania applicationDidBecomeActive niekoniecznie są balacone jeden za jeden, więc nie kolejki rzeczy willy nilly w applicationDidBecomeActive bez inteligencji. – Gruntcakes