Así que en la clase de aplicaciones Delegado - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
sólo se le podrá llamar a la primera vez que acceda al app.Then se llamará - (void)applicationDidBecomeActive:(UIApplication *)application
.
Si su iPhone iOS es 4.0 o posterior, cuando un usuario hace clic en el botón de inicio, primero invocará - (void)applicationWillResignActive:(UIApplication *)application
, luego - (void)applicationDidEnterBackground:(UIApplication *)application
.
Luego la aplicación se ejecutará en segundo plano hasta que el usuario la mate. Cuando el usuario ingrese de nuevo la aplicación, primero invocará - (void)applicationWillEnterForeground:(UIApplication *)application
, luego - (void)applicationDidBecomeActive:(UIApplication *)application
.
Por lo tanto, relacionado con su pregunta, debe llamar al applicationWillEnterForeground:
o applicationDidBecomeActive:
para volver a cargar sus datos. Aunque en el comentario de xcode de estos métodos, Apple sugiere usar applicationDidBecomeActive:
para reiniciar las tareas pausadas y/o actualizar la interfaz de usuario; mientras que en el applicationWillEnterForeground:
, puede deshacer los cambios que ha realizado al ingresar el fondo.
Para que sea más fácil de ver, puse una etiqueta numérica para cada método. Aquí es cuando se llamará el método.
0 application:(UIApplication *)application didFinishLaunchingWithOptions:
1 applicationDidBecomeActive:
2 applicationWillResignActive:
3 applicationDidEnterBackground:
4 applicationWillEnterForeground:
Introducir primero la aplicación: llamar a 0, 1;
Pulse el botón de inicio: llame a 2, luego 3;
Botón de inicio doble (multitarea): llamada 2;
Ingrese la aplicación de nuevo: call 4, then 1;
Veo un retraso de un ciclo en la actualización actual de las preferencias del sistema (standardUserDefaults) aquí. por ejemplo, 1. aplicación-a-fondo 2. cambiar la preferencia de la aplicación 3. aplicación-a-primer plano: ¡sin cambios! 4. app-to-background 5. app-to-foreground: ¡allí está! –
loco, así que creo que los valores predeterminados no se guardan por las preferencias del sistema hasta * después de que se invoca * applicationDidBecomeActive(). Lo determiné porque si solo imprimo el valor cada dos meses en mi aplicación, está actualizado. –
puede forzar la sincronización de los valores predeterminados del usuario con [[NSUserDefaults standardUserDefaults] synchronize]; – zambono