Различать applicationDidEnterBackground и applicationWillTermimate
В моем приложении, когда пользователь нажимает кнопку Домой, я Сохранить данные в NSUserDefaults
. Приложение работает в фоновом режиме. Когда пользователь повторно запускает приложение, я использую метод applicationWillEnterForeground
для отображения сохраненных данных.
однако, когда пользователь дважды нажимает на кнопку "Домой" и выходит из приложения, выбрав "минус" в приложении, мне нужно сохранить разные данные в тех же пользовательских значениях по умолчанию. Но когда я выхожу из приложения applicationWillTerminate
иногда называется, а иногда нет.
Итак, как я могу дифференцировать, что приложение просто свернуто или оно выходит?
6 ответов
всякий раз, когда пользователь нажимает только один раз, и приложение будет идти в фоновом режиме в то время applicationDidEnterBackground всегда звонит. В этом методе можно временно обновить / сохранить значение NSUserDefaults.
Если в случае, приложение снова выйдет на передний план с прекращением с помощью двойных кранов,applicationDidBecomeActive вызовет, в котором вы можете снова обновить / удалить временно сохраненное значение NSUserDefaults. И если пользователь завершает работу применение двойными нажатиями, сохраненное значение будет сохранено с NSUserDefaults.
о разнице между UIApplicationDelegate
методы, пожалуйста, обратитесь к Ссылка На Протокол UIApplicationDelegate. applicationDidEnterBackground:
всегда будет вызываться при нажатии кнопки "Home". Но кажется, что applicationWillTerminate:
не гарантируется вызов.
если ваше приложение не работает на переднем плане, оно может быть либо в фоновом режиме, либо в приостановленном режиме. Пожалуйста, обратитесь к разделу "цикл запуска приложения"руководство по программированию приложений iOS-состояния приложений и Многозадачность.
когда приложение работает в фоновом режиме и наблюдении за событиями applicationWillTerminate:
будет вызываться, когда он будет завершен. Когда приложение приостановлено, это не будет. См. Описание В разделе "прекращение приложения":
даже если вы разрабатываете свое приложение с помощью iOS SDK 4 и более поздних версий,вы все равно должны быть готовы к тому, что ваше приложение будет убито без какого-либо уведомления. пользователь может убивать приложения явно с помощью многозадачности UI. Кроме того, если памяти становится ограниченной, система может удалить приложения из памяти, чтобы сделать больше места. приостановленные приложения не уведомляются о прекращении, но если ваше приложение в настоящее время работает в фоновом режиме (и не приостановлено), система вызывает
applicationWillTerminate:
метод делегата приложения. ваше приложение не может запросить дополнительное время выполнения фона из этого метода.
applicationDidEnterBackground - всякий раз, когда пользователь нажмите клавишу дома кнопка и приложение будут идти в фоновом режиме в это время он вызывает метод applicationDidEnterBackground. Он вызывается всякий раз, когда пользователь минимизирует приложение, нажав кнопку Home или переключившись на другое приложение.
applicationWillTerminate - он вызывается только тогда, когда процесс приложений фактически убит. То есть, пользователь убивает его с помощью красного минус кнопка закрытия в переключателе задач или сама система убивает его в фоновом режиме (например, при низком уровне памяти). Приложение не может запросить дополнительное фоновое время выполнения из этого метода.
applicationDidEnterBackground - этот метод будет вызываться, когда пользователь устанавливает приложение в фоновом режиме, нажав кнопку Домой.
applicationWillTerminate-этот метод будет вызываться, когда пользователь выходит из приложения, которое находится в фоновом режиме, нажав на красную кнопку минус .
приложения, которые поддерживают фоновое выполнение, этот метод обычно не вызывается, когда пользователь выходит из приложения, потому что приложение просто перемещается в фоновом режиме в этом случае
Если есть данные, которые вам нужно сохранить, чем вы должны сделать это, когда приложение уходит в фоновый режим.
applicationWillTerminate
вызывается только тогда, когда процесс приложений фактически убит. То есть пользователь убивает его, используя красную кнопку закрытия минус в переключателе задач, или сама система убивает его в фоновом режиме (например, при низком состоянии памяти).
для ваших нужд, ; он вызывается всякий раз, когда пользователь минимизирует приложение, нажав кнопку Home или переключившись на другое приложение.