2012-06-22 19 views
7

He una NSRunLoop en mi aplicación conectada a un temporizador:¿Qué sucede con mi NSRunLoop y el temporizador cuando la aplicación entra en segundo plano y vuelve?

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

Cuando la aplicación entra en el fondo, lo que sucede a este runloop? ¿Desaparece, lo que significa que debería volver a crearlo en applicationDidBecomeActive:?

Respuesta

8

Debe detener sus temporizadores cuando se suspende su aplicación y reiniciarlos en -applicationDidBecomeActive:. Consulte "Qué hacer cuando ocurre una interrupción" en Responding to Interruptions. Sin embargo, no tiene que preocuparse por el ciclo de ejecución: el sistema operativo se encargará de esa parte.

+0

Muy bien, así que no necesito detener manualmente el runloop. ¿Necesitaré crear uno en applicationDidBecomeActive: usando el mismo código? – DGund

+1

No. Pruébalo: tus bucles de ejecución deberían estar bien. – Caleb

+0

Tenga en cuenta que las llamadas a ser suspendidas y las llamadas a applicationDidBecomeActive no son necesariamente unidas una a una, por lo tanto, no coloque en cola las cosas sin querer en applicationDidBecomeActive sin cierta inteligencia. – Gruntcakes

Cuestiones relacionadas