Pregunta

Mi aplicación crea algunos archivos temporales que necesito durante todo su ciclo de vida. Necesito disponer de esos archivos con el tiempo, por lo que no ocupan espacio en el dispositivo. Pensé que podría borrarlos cuando se cierra la aplicación, pero ya que la multitarea se ha introducido el ciclo de vida no es tan simple como lo que solía ser. Mi pregunta principal es: ¿Cuándo mi solicitud pasa a segundo plano y muere más tarde, tampoco recibe applicationWillTerminate:? ¿O es sólo borrada de la memoria?

No puedo hacer la limpieza cuando la aplicación pasa a segundo plano, ya que podría estar en segundo plano en medio de una operación y necesitaría los archivos temporales una vez que llegue de nuevo en primer plano. Creo que podría limpiar los archivos tras el arranque, pero estoy interesado en el comportamiento applicationWillTerminate: de todos modos.

¿Fue útil?

Solución

No, applicationWillTerminate: no se llama en la multitarea de iOS 4 dispositivos habilitados. Cuando su aplicación se termina por lo general significa que el dispositivo se está quedando sin memoria, por lo que incluso si es hicieron ser llamado no hay decir que usted tendría suficiente memoria disponible para completar la tarea de todos modos.

Apple recomienda limpiar cuando su aplicación pasa a un segundo plano. Puede solicitar más tiempo para hacer esto si usted necesita unos pocos segundos (este es uno de los pocos escenarios multitarea abrir a todas las aplicaciones).

Sus otras opciones sería la de poner en orden cuando la tarea es terminada (siempre que sea) o cuando se inicia la aplicación. Supongo que puede haber otras permutaciones ...

Otros consejos

Internet dice que applicationWillTerminate: no se llama mientras que la aplicación se mató en el fondo. La otra forma es ahorrar algo de información (en NSUserDefaults, o algo así), que los archivos temporales que se abrió, y después de la hora de inicio si esos archivos se quedan, y eliminarlos. Además, se puede averiguar, cómo mata a su aplicación iOS (supongo que esto se hace mediante el envío de señales, sin embargo, no estoy seguro) y añadir manejador de señales para su aplicación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top