Итак, в классе App Delegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
будет вызываться только при первом входе в приложение. Затем оно будет вызывать - (void)applicationDidBecomeActive:(UIApplication *)application
.
Если у вас iphone iOS 4.0 или более поздней версии, когда пользователь нажимает кнопку «Домой», он сначала вызывает - (void)applicationWillResignActive:(UIApplication *)application
, затем - (void)applicationDidEnterBackground:(UIApplication *)application
.
Тогда приложение будет работать в фоновом режиме, пока пользователь не убьет его. Когда пользователь снова входит в приложение, оно сначала вызывает - (void)applicationWillEnterForeground:(UIApplication *)application
, затем - (void)applicationDidBecomeActive:(UIApplication *)application
.
В связи с вашим вопросом вам следует позвонить либо applicationWillEnterForeground:
, либо applicationDidBecomeActive:
, чтобы перезагрузить ваши данные. Хотя в комментарии Xcode об этих методах Apple предлагает использовать applicationDidBecomeActive:
для перезапуска приостановленных задач и / или обновления пользовательского интерфейса; в то время как в applicationWillEnterForeground:
вы можете отменить изменения, внесенные вами при вводе фона.
Итак, чтобы было легче увидеть, я поставил числовой тег для каждого метода. Вот когда метод будет вызван.
0 application:(UIApplication *)application didFinishLaunchingWithOptions:
1 applicationDidBecomeActive:
2 applicationWillResignActive:
3 applicationDidEnterBackground:
4 applicationWillEnterForeground:
Сначала введите приложение: позвоните 0, затем 1;
Хит кнопку домой: вызов 2, затем 3;
Двойная кнопка Home (многозадачность): вызов 2;
Введите приложение еще раз: позвоните 4, затем 1;