2010-11-08 12 views
8

expertos hallo,¿Solo se llama a applicationWillResignActive cuando el iPhone se apaga?

que he probado lo que happing con mi aplicación cuando el iPhone está apagado mientras la aplicación está activa. Para este propósito registré los métodos de devolución de llamada del ciclo de vida de la aplicación en la consola del depurador xcode.

El resultado fue: Cuando presiono el botón de encendido/apagado del dispositivo durante un tiempo se llama al applicationWillResignActive. El iPhone muestra una opción para apagar el dispositivo en la pantalla. Si reconozco que desconectarme, el iPhone se apaga. Pero aparentemente no hay otros métodos de devolución de llamada como applicationDidEnterBackground o applicationWillTerminate que se llaman. Como resultado, todos los datos se perderán si no los guardo en applicationWillResignActive. Aunque el iOS Application Programming Guide dice, uno debe guardar los datos de una aplicación en applicationDidEnterBackground y applicationWillTerminate.

¿Cuál cree que es uno de los dos métodos que se siguen utilizando y que ya no se imprime en la consola?

Saludos cordiales

+0

Interesante observación. Parece posible que la consola lo llame para que esté desconectado, pero apuesto a que nunca se llama. Mi corazonada es que las aplicaciones de iOS se manejan como la terminación repentina de OSX, por lo que el proceso se cancela sin notificación. Pero, de nuevo, apuesto a que los usuarios rara vez apagan su dispositivo (si es que saben cómo). –

+0

Pero el dispositivo también se apaga si la batería está vacía. Es difícil probar el comportamiento de una aplicación en caso de una batería empírica. ¡Porque si conectas tu iPhone a la PC de desarrollo para registrar los métodos de devolución de llamada en la consola, se carga! Pero supongo que la aplicación se comporta de forma similar a apagar la carcasa manualmente. – Coco

+1

He probado en 3GS con iOS 5.0 ... si se confirma el apagado, se invocan applicationDidEnterBackground y applicationWillTerminate. El dispositivo se conectó a la consola antes de apagarse. – Dev

Respuesta

1

Creo que su prueba probablemente sea correcta. La aplicación ya no está activa, sin embargo, no se ha quedado en segundo plano, como cuando aparece la llamada, por lo que creo que las notificaciones tienen sentido.

¿Qué deberías hacer al respecto? Mi sugerencia sería nada. Me parece que este evento ocurre tan infrecuentemente que no vale la pena preocuparse. Si desea usar el cinturón y los refuerzos, el estado de salvar en 'applicationWillResignActive' debería funcionar siempre que no haya mucho que almacenar.

3

He hecho algunas pruebas adicionales:

He guardado los llamados métodos de ciclo de vida en una base de datos y apagó el iPhone mientras que la aplicación de mayo estaba en marcha. En realidad solo se llama applicationWillResignActive. Pero después de apagar mi aplicación reside en el estado "no en ejecución", porque al iniciarla inicia las llamadas de application:didFinsihLaunchingWithOptions: y applicationDidBecomeActive. Entonces los datos de la aplicación se pierden si no los guardo en applicationWillResignActive.

Si la batería está vacía mientras se ejecuta una aplicación applicationDidEnterBackground y applicationWillTerminate son llamados (sin llamada de applicationWillResignActive!).

0

He probado esto. Este es el orden en que se llaman los métodos.

  1. applicationWillResignActive - cuando el usuario siempre tiene el botón de bloqueo del dispositivo (y se presenta un control deslizante que pide al usuario "Slide para apagar"

Si desliza, el dispositivo llamará siguientes dos métodos en su aplicación en el orden siguiente

  1. applicationDidEnterBackground

  2. applciationWillTerminate

El dispositivo se apagará.

Supongo que sucede lo mismo cuando la batería se agota.

Esto fue probado en 3Gs con iOS 5.0

Espero que esto ayude.

Cuestiones relacionadas