2011-09-08 12 views
15

¿Cómo saber si la aplicación se termina por el usuario o por el IOS cuando la aplicación reinicio>¿Cómo saber si la aplicación se termina por el usuario o iOS (después de fondo 10min)

'por el usuario' significa "haciendo doble clic en Inicio Botón y presionar - botón ". asesinados por el usuario

'por el IOS' significa "estado de ejecución de aplicaciones convertirse fondo, y el IOS terminan aplicación después de 10 minutos"

+2

¿por qué iOS terminaría su aplicación después de 10 minutos mientras estaba en segundo plano? – mayuur

+0

Quiero saber si el usuario eliminó la aplicación o no (Al hacer clic en el botón rojo '-') – ChangUZ

Respuesta

9

iOS podría cancelar su aplicación, si los recursos del sistema son bajos - si esto sucede, verá applicationWillTerminate .

Solía ​​ser que si un usuario mataba la aplicación (el administrador de tareas, mediante el botón doble clic y luego toca el '-' rojo) es un SIGKILL y no se llama a applicationWillTerminate. Un informe a mediados de 2013 sugiere que esto ha cambiado y ahora se llama applicationWillTerminate.

Puede usar NSUserDefaults para escribir un bit de estado en applicationWillTerminate para observar que se llamó a esta función y, presumiblemente, se trata de un kill del sistema en lugar de un kill del usuario.

+2

En relación con: "Si un usuario mata la aplicación (administrador de tareas, haga doble clic y luego toque el rojo '-') es un SIGKILL y applicationWillTerminate no se llama ". Solo una advertencia de que este comportamiento puede haber cambiado en algún momento. Otro desarrollador de mi equipo acaba de probar esto e informó que 'applicationWillTerminate' se llamó en este caso. –

+0

Gracias Steve, siempre es bueno mantener estas respuestas actualizadas. –

+2

Acabo de probar esto con depurador: se llama a applicationWillTerminate, pero no sin depurador (usando el registro de la consola de Xcode para iPhone5 con iOS 7.1) –

10

Si su aplicación está en estado suspendido, el applicationWillTerminate nunca será llamado independientemente de quién haya matado la aplicación iOS o el usuario.

Su applicationWillTerminate solo llamará cuando su aplicación esté en segundo plano y muera (ya sea por iOS o por el usuario) el término fondo significa que se está ejecutando en segundo plano no en estado suspendido.

acaba de leer this reference

applicationWillTerminate:: le permite saber que su aplicación está siendo terminado. Este método no se llama si su aplicación está suspendida.

Aquí está la tabla de diversos estados enter image description here

Antecedentes - La aplicación está en el fondo y el código de ejecución. La mayoría de las aplicaciones ingresan a este estado brevemente en el camino hacia su suspensión. Sin embargo, una aplicación que solicita tiempo de ejecución adicional puede permanecer en este estado por un período de tiempo. Además, una aplicación que se inicia directamente en segundo plano ingresa a este estado en lugar de inactiva. Para obtener información sobre cómo ejecutar código en segundo plano, consulte Ejecución en segundo plano.

+1

Respuesta más clara a este hilo. ¡Gracias! –

Cuestiones relacionadas