2012-06-22 9 views
7

Ich habe ein NSRunLoop in meiner app mit einem Timer:Was passiert mit meinem NSRunLoop und Timer, wenn die App in den Hintergrund tritt und zurückkehrt?

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

Wenn die App in den Hintergrund geht, was passiert dann mit diesem Runloop? Verschwindet es, was bedeutet, dass ich es in applicationDidBecomeActive: neu erstellen sollte?

Antwort

8

Sie sollten Ihre Timer anhalten, wenn Ihre App angehalten ist, und sie unter -applicationDidBecomeActive: neu starten. Siehe "Was zu tun ist, wenn eine Unterbrechung auftritt" in Responding to Interruptions. Sie müssen sich jedoch keine Sorgen um die Run-Schleife machen - das Betriebssystem kümmert sich um diesen Teil.

+0

Okay, ich brauche also nicht manuell den Runloop zu stoppen. Muss ich einen auf applicationDidBecomeActive erstellen: mit dem gleichen Code? – DGund

+1

Nein. Versuchen Sie es - Ihre Laufschleife (n) sollte in Ordnung sein. – Caleb

+0

Denken Sie daran, dass Anrufe zu suspendiert werden und Aufrufe an applicationDidBecomeActive nicht unbedingt für eins zu eins ausgeglichen werden, also stellen Sie keine Dinge in applicationDidBecomeActive ohne irgendeine Intelligenz bereit. – Gruntcakes

Verwandte Themen