¿Cuál es el delegado adecuado para implementar cuando una aplicación está despertando de estar en segundo plano y desea que se prepare para que esté activa?
applicationWillEnterForeground vs applicationDidBecomeActive - ¿Cuál es la diferencia?
¿Cuál es el delegado adecuado para implementar cuando una aplicación se va a suspender y desea prepararla para limpiar y guardar datos?
applicationWillResignActive vs. applicationDidEnterBackground: ¿cuál es la diferencia?
Además, noté que se llama a applicationWillResignActive cuando entra un SMS o una llamada entrante, pero el usuario elige hacer clic en Aceptar y continuar. No quiero que mi aplicación tome ninguna medida en estos casos. Solo quiero que siga ejecutándose sin ninguna limpieza intermedia ya que el usuario no salió de la aplicación. Entonces, creo que tiene más sentido hacer un trabajo de limpieza solo en applicationDidEnterBackground.
Agradecería su aporte sobre las mejores prácticas a seguir para elegir qué delegados implementar para despertarse e irse a dormir, así como considerar eventos como ser interrumpidos por SMS / llamadas.
Gracias
-applicationWillEnterForeground:
, no se llamará solo-applicationDidEnterBackground:
(supongamos que iOS no cree que sea un relanzamiento).applicationWillEnterForeground:
se llamará cada vez de fondo a primer plano? No puedo encontrar un caso que NO se llame SINapplicationDidBecomeActive
después.Administrar el ciclo de vida de su aplicación es útil para sus preguntas. Para un concepto rápido, puede ver las Figuras en ese documento. También puede leer el comentario del código generado por el Asistente XCode. Listado de la siguiente manera:
Para obtener explicaciones más detalladas, consulte el documento oficial de UIApplicationDelegate
fuente
Todavía estaba un poco confundido con la respuesta de Dano, así que hice una pequeña prueba para obtener el flujo de eventos en ciertos escenarios para mi referencia, pero también podría serle útil. Esto es para aplicaciones que NO usan
UIApplicationExitsOnSuspend
en su info.plist. Esto se realizó en un simulador iOS 8 + confirmado con un dispositivo iOS 7. Disculpe los nombres del controlador de eventos de Xamarin. Ellos son muy similares.Sí,
DidEnterBackground
se llama dos veces en el dispositivo iOS7. En ambas ocasiones, el estado de la aplicación UIA es Fondo. Sin embargo, el simulador de iOS 8 no. Esto necesita pruebas en el dispositivo iOS 8. Actualizaré mi respuesta cuando lo tenga en mis manos, o alguien más podría confirmar.fuente
applicationWillEnterForeground
se llama:cuando la aplicación se relanza (viene del fondo al primer plano) Este método no se invoca cuando la aplicación se inicia por primera vez, es decir, cuando
applicationDidFinishLaunch
se llama, sino solo cuando viene del fondoapplicationDidBecomeActive
applicationDidBecomeActive
se llamacuando la aplicación se inicia por primera vez después
didFinishLaunching
despuésapplicationWillEnterForeground
si no hay una URL para manejar. despuésapplication:handleOpenURL:
se llama. despuésapplicationWillResignActive
si el usuario ignora la interrupción como una llamada telefónica o un SMS. después de la desaparición de alertView en cualquier lugar de la aplicaciónfuente
Se llama a applicationWillResignActive cuando el sistema solicita permisos. (en iOS 10). En caso de que alguien tenga el mismo problema que yo ...
fuente
En iOS 8+ hay una diferencia sutil pero importante para atender llamadas telefónicas.
En iOS 7, si el usuario atiende una llamada telefónica, se llama a applicationWillResignActive: y applicationDidEnterBackground: Pero en iOS 8+ solo se llama a applicationWillResignActive:.
fuente
Para iOS 13+ se ejecutarán los siguientes métodos:
fuente