Приложения Android могут хранить данные в настройках приложения. Из этого руководства вы узнаете, как хранить постоянные данные приложения с общими настройками.
Android SDK предоставляет полезные API для хранения и извлечения настроек приложения. Предпочтения хранятся в виде групп пар ключ / значение и доступны на уровне активности или совместно используются всеми классами активности для данного приложения (но не за пределами пакета приложения).
Что такое предпочтение?
Общие предпочтения — это просто наборы значений данных, которые хранятся постоянно. Постоянно мы говорим о данных, которые сохраняются в течение событий жизненного цикла приложения. Другими словами, приложение (или устройство, в этом отношении) может быть запущено и остановлено без потери данных. В следующий раз, когда пользователь запустит приложение, эти данные будут по-прежнему доступны.
Индивидуальное предпочтение — это просто пара ключ-значение с определенным типом данных для значения. Ключ предпочтения — это просто строка, которая однозначно идентифицирует предпочтение, а значение — это просто значение этого предпочтения.
Например, ваше приложение может захотеть сохранить имя пользователя. Приложение может иметь единственное предпочтение хранить эту информацию:
- Тип данных предпочтения может быть строкой
- Ключом может быть строка с именем «Имя пользователя»
- Значением будет фактическая строка имени пользователя, например «AndroidPowerUser123» или «Bob».
Предпочтение может быть любым из нескольких типов данных. Следующие типы данных поддерживаются классом SharedPreferences:
- Булевы значения
- Значения с плавающей точкой
- Целочисленные значения
- Длинные значения
- Строковые значения
Как работают общие настройки
Android SDK содержит полезные классы для упрощения настройки и запуска приложений. Функциональность предпочтений можно найти в интерфейсе SharedPreferences пакета android.content.
Приложение может иметь несколько наборов параметров приложения, где каждый набор имеет имя. Например, игровое приложение может иметь набор предпочтений для информации о пользователе (имя пользователя, адрес электронной почты, высокий балл и т. Д.) И набор предпочтений для состояния игры (текущий уровень, текущий счет и т. Д.). Предпочтения могут быть сохранены на уровне активности или приложения.
Предпочтения уровня приложения доступны во всех действиях. Эти предпочтения извлекаются с помощью метода класса контекста приложения, который называется getSharedPreferences () по имени. Например:
import android.content.SharedPreferences; ... Настройки SharedPreferences = getSharedPreferences ("MyGamePreferences", MODE_PRIVATE);
Количество наборов общих настроек, которые может иметь ваше приложение, не ограничено. Как ваше приложение организует свои предпочтения, зависит от вас. Однако вы можете объявить имена своих наборов настроек, чтобы вы могли легко загружать и получать доступ к настройкам из любого действия в вашем приложении. Например:
public static final String PREFERENCE_FILENAME = "AppGamePrefs";
Деятельность может также иметь личные предпочтения. Эти предпочтения доступны только в пределах определенного класса «Активность» и не доступны другим действиям. Деятельность может иметь только один набор личных предпочтений. Следующий код извлекает личные настройки действия:
import android.content.SharedPreferences; ... SharedPreferences settingsActivity = getPreferences (MODE_PRIVATE);
Настройка предпочтений
Сохранить настройки вашего приложения довольно просто. Во-первых, вы должны решить, хотите ли вы, чтобы приложение или настройки деятельности. Используйте соответствующий метод для извлечения соответствующего объекта SharedPreferences: используйте метод getPreferences () класса Activity для предпочтений уровня активности или метод getSharedPreferences () класса Context для предпочтений уровня приложения.
Если у вас есть действительный объект SharedPreferences, вы должны использовать SharedPreferences.Editor для добавления, изменения или удаления содержимого предпочтений. Чтобы получить редактор для определенного объекта SharedPreferences, используйте его метод edit (). Внесите любые изменения в предпочтения, используя методы, доступные в классе Editor. Например, класс SharedPreferences.Editor имеет вспомогательные методы для сохранения предпочтений разных типов данных:
- Сохранять логические значения с помощью метода putBoolean ()
- Сохранять значения с плавающей точкой с помощью метода putFloat ()
- Сохранять значения int с помощью метода putInt ()
- Сохранять длинные значения с помощью метода putLong ()
- Сохранять строковые значения с помощью метода putString ()
В редакторе вы также можете удалить конкретное предпочтение по имени, используя метод remove (), или удалить все предпочтения в наборе, используя метод clear (). После того как вы закончили редактирование объекта SharedPreferences, вы можете сохранить свои изменения, используя метод commit () редактора.
Например, следующий код извлекает набор настроек приложения с именем «MyGamePreferences» и добавляет строковый параметр с именем «UserName» со значением «Guest123» и логический параметр с именем «PaidUser» со значением false.
import android.content.SharedPreferences; ... SharedPreferences gameSettings = getSharedPreferences ("MyGamePreferences", MODE_PRIVATE); SharedPreferences.Editor prefEditor = gameSettings.edit (); prefEditor.putString ("Имя пользователя", "Гость123"); prefEditor.putBoolean ("PaidUser", false); prefEditor.commit ();
Обновление настроек
Обновление настроек так же просто, как получение другого SharedPreferences.Editor и внесение изменений в заданное предпочтение по имени. Например, следующий код изменяет настройку «PaidUser»:
SharedPreferences gameSettings = getSharedPreferences ("MyGamePreferences", MODE_PRIVATE); SharedPreferences.Editor prefEditor = gameSettings.edit (); prefEditor.putBoolean ("PaidUser", true); prefEditor.commit ();
Совет: Как видите, может быть полезно определить каждый ключ предпочтения как статические строковые переменные конечной строки, чтобы заданное предпочтение всегда сохранялось обычным, воспроизводимым способом. Вы не хотите, чтобы в вашем коде плавали случайные строки предпочтений.
Получение настроек
Вам не нужен редактор, чтобы просто прочитать настройки. Вместо этого получите объект SharedPreferences и используйте соответствующий метод для получения предпочтения по имени:
- Получить логические значения с помощью метода getBoolean ()
- Получить значения с плавающей точкой с помощью метода getFloat ()
- Получить значения int с помощью метода getInt ()
- Получить длинные значения с помощью метода getLong ()
- Получить значения String с помощью метода getString ()
Каждый из этих методов имеет два параметра: строку ключа предпочтения и значение по умолчанию, которое возвращается, если предпочтение не определено.
Вы также можете проверить наличие предпочтения по имени, используя метод contains (). Вы также можете перебрать все предпочтения для данного набора, используя метод getAll () класса SharedPreferences.
Реакция на изменения предпочтений
Ваше приложение может прослушивать и реагировать на изменения в общих настройках, реализуя прослушиватель и регистрируя его с помощью конкретного объекта SharedPreferences, используя методы registerOnSharedPreferenceChangeListener () и unregisterOnSharedPreferenceChangeListener ().
Вывод
Общие настройки (android.content.SharedPreferences) можно использовать для простого хранения данных приложения. Предпочтения приложения хранятся в виде пар ключ-значение и могут быть разных типов данных, включая числа, строки и логические значения. Различные наборы предпочтений могут храниться в именованных наборах предпочтений. Используйте общие настройки для постоянного хранения простых данных приложения.
Об авторах
Разработчики мобильных приложений Лорен Дарси и Шейн Кондер являются соавторами нескольких книг по разработке Android: углубленная книга по программированию под названием « Разработка беспроводных приложений для Android» и « Разработка Android-приложений Sams TeachYourself за 24 часа» . Когда они не пишут, они тратят свое время на разработку мобильного программного обеспечения в своей компании и оказание консультационных услуг. С ними можно связаться по электронной почте [email protected] , через их блог на androidbook.blogspot.com и в Twitter @androidwireless .