2011-01-21 20 views
5

Al ejecutar algunas pruebas noté que cuando una aplicación (sin privilegios de fondo, es decir, voip, gps, etc.) entra en el estado de fondo, cualquier subproceso de fondo (o NSOperations concurrentes) que se ejecutan en el momento parecen estar en pausa (sin terminar), y continúan cuando la aplicación entra en primer plano.Comportamiento de subprocesos al ingresar fondo en iOS multitarea

No puedo ver este comportamiento de subproceso documentado en cualquier lugar. ¿Alguien sabe si este comportamiento está definido y se puede contar con él?

Sería útil no tener que cancelar tareas o involucrarse en la finalización de tareas si el hilo puede continuar de manera segura cuando la aplicación se vuelve a abrir. Especialmente para operaciones complicadas.

Cualquier información sería genial. ¡Gracias!

Respuesta

9

Cuando se cierra una aplicación no multitarea, se congela en su estado actual y se deja en la memoria. Sin embargo, si la memoria es baja, el usuario la cierra desde la barra multitarea, o el dispositivo se apaga, la aplicación finalizará sin previo aviso. Puede confiar en que una aplicación que regresa del fondo continuará como antes, pero debe guardar el estado al ingresar el fondo en caso de que la aplicación se cierre.

+1

Estaba consciente de que el estado actual (es decir, la memoria) es perseverado, sin embargo, no estoy al tanto de que los diversos procesos/subprocesos mismos se conservan en el mismo estado y la ejecución simplemente se detiene. –

+3

Parece que el estado de la aplicación y sus hilos se mantienen y continúan una vez que vuelve a estar en primer plano. Lo único que debe saber es que no puede garantizar que las llamadas de delegado (es decir, -applicationWillEnterForeground :) se realizarán __antes de que se inicien las ejecuciones de hilos en segundo plano. –

Cuestiones relacionadas