Сохранение состояния с помощью настроек
Настройки — замечательное средство для оформления приложений пользователями в соответствии с их предпочтениями, но инфраструктура работы с настройками Android пригодна не только для этого. Когда приложению нужно отслеживать какие-то данные между его вызовами, одним из средств могут служить именно настройки. Мы уже говорили об управлении данных с помощью поставщиков контента. Можно также использовать специальные файлы на SD-карте. Но можно применять и файлы разделяемых настроек вместе с кодом.
В классе Activity имеется метод getPreferences(int mode) . В действительности он просто вызывает метод getSharedPreferences() с именем класса активности и режимом. В результате получается файл разделяемых настроек, специфичный для активности, который можно использовать для хранения данных между запусками активности. Простой пример подобного рода приведен в е 13.12.
Этот код получает ссылку на настройки для класса активности и проверяет, существует ли логическая “настройка” с именем initialized. Слово “настройка” заключено в кавычки потому, что это значение не предназначено для просмотра или установки пользователем — это просто значение, которое необходимо сохранить в файле разделяемых настроек до следующего раза. Если это значение получено, то файл разделяемых настроек существует и, значит, данное приложение уже вызывалось раньше. Тогда можно прочитать из файла разделяемых настроек и другие значения. Например, someString может быть переменной внутри активности, которая должна устанавливаться во время последнего вызова этой активности или содержать значение по умолчанию, если активность вызывается в первый раз.
Для записи значений в файл разделяемых настроек вначале необходимо получить объект Editor. После этого можно помещать значения в настройки, а в конце зафиксировать все изменения. Обратите внимание, что “за кулисами” Android управляет объектом SharedPreferences, который действительно является разделяемым. В идеале в любой момент времени не должно существовать больше одного объекта Editor. Тем не менее, очень важно вызвать метод commit() , чтобы обновить объект SharedPreferences и XML-файл разделяемых настроек. В показанном примере производится запись значения someString для использования при следующем запуске активности.
Значения в файле настроек можно читать, записывать и обновлять в любой момент времени. С помощью такого файла можно, к примеру, записывать лучшие результаты в какой-нибудь игре или фиксировать время последнего запуска приложения. Можно также применять вызов getSharedPreferences() с различными именами, чтобы управлять разными наборами настроек в рамках единственного приложения или даже одной активности.
До сих пор мы использовали в примерах режим MODE_PRIVATE. Возможны еще режимы MODE_WORLD_READABLE и MODE_WORLD_WRITEABLE. Эти режимы применяются при создании XML-файлов разделяемых настроек для соответствующей установки прав доступа к файлу. Поскольку файлы разделяемых настроек хранятся в каталоге /data приложения и, следовательно, не доступны другим приложениям, то нас интересует только режим MODE_PRIVATE.
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.