Удаление ресурсов при переходе в фоновое состояние
Еще раз скомпилируйте и запустите данное приложение на выполнение, чтобы посмотреть, что же при этом происходит. Уже лучше, верно? Теперь коснитесь любого из четырех сегментов элемент управления, чтобы активизировать скрытую последовательность перехода данного приложения в фоновое состояние и возврата в активное. Как видите, выбранный вами сегмент (допустим, Three) остается по-прежнему выбранным, что и не удивительно. Вновь переведите приложение в фоновое состояние, вызовите панель задач и удалите это приложение, а затем перезапустите его. В итоге вы вернетесь к его первоначальному состоянию, где ни один из сегментов элемента управления не выбран. Именно этот недостаток нам и предстоит далее устранить.
Сохранить состояние выбранного сегмента не так уж и трудно. Для этого достаточно ввести в конце метода applicationDidEnterBackground несколько строк кода, выделенных ниже полужирным.
Однако где именно мы должны восстановить индекс этого выделенного сегмента, чтобы воспользоваться им для настройки сегментированного элемента управления? Противоположный данному метод applicationWillEnterForeground нам, скорее всего, не поможет. Ведь когда этот метод вызывается, приложение уже выполняется, а данная его настройка остается по-прежнему неизменной. Вместо этого нам требуется доступ к данной настройке после нового запуска приложения, что возвращает нас назад к методу viewDidLoad. Введите в конце этого метода несколько строк кода.
В приведенный выше код нам пришлось ввести небольшую проверку, чтобы выяснить, сохранено ли вообще значение ключа selectedlndex. Такая проверка производится с целью учесть и те случаи, когда приложение запускается в первый раз и когда еще ничего не выбрано.
Вновь скомпилируйте и запустите данное приложение на выполнение, а затем коснитесь одного из сегментов элемента управления, чтобы произвести последовательность операций перехода в фоновое состояние, удаления и перезапуска приложения. Теперь выделение сегмента сохраняется! Очевидно, что приведенный здесь пример достаточно прост, но сам продемонстрированный в нем принцип может быть распространен на все виды состояний приложения. Вам решать, до какой степени следует его распространять, чтобы создать у пользователя иллюзию постоянного присутствия приложения, просто ожидающего возврата к нему!
Запрос дополнительного времени на фоновую обработку.
Как упоминалось выше, приложение может быть удалено из оперативной памяти, если его пребывание в фоновом состоянии отнимает слишком много времени. Для того чтобы убедиться в этом, достаточно ввести строку кода в метод.
- Дата: 8-01-2015, 13:26