В моем приложении существуют некоторые специализированные настройки, которые должны быть доступны мне, в следующий раз, когда мое приложение запускает.
Другими словами, я хочу, чтобы данные были доступны через сессии цикла приложения.
Может это быть достигнутым, не используя базу данных (sqlite).
Многие приложения могут предоставлять возможность фиксировать предпочтения пользователя по настройкам конкретного приложения или действия. Для поддержки этого Android предоставляет простой набор API.
Предпочтения обычно представляют собой пары имя-значение. Они могут храниться как "Общие предпочтения" в различных действиях приложения (обратите внимание, что в настоящее время они не могут быть общими для разных процессов). Или это может быть что-то, что должно храниться конкретно для какого-то вида деятельности.
Общие предпочтения: Общие предпочтения могут использоваться всеми компонентами (действиями, сервисами и т.д.) вне приложения.
Предпочтения, управляемые деятельностью: Эти предпочтения могут быть использованы только в деятельности и не могут быть использованы другими компонентами приложения.
Общие предпочтения:
Управление общими предпочтениями осуществляется с помощью метода getSharedPreferences
класса Context
. Предпочтения хранятся в файле, который может быть либо пользовательским (1), либо файлом по умолчанию (2).
(1) Вот как вы получаете экземпляр, когда хотите указать имя файла
public static final String PREF_FILE_NAME = "PrefFile";
SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);
MODE_PRIVATE
- это режим работы для предпочтений. Это режим по умолчанию, который означает, что доступ к созданному файлу будет иметь только вызывающее приложение. Другие два поддерживаемых режима - MODE_WORLD_READABLE
и MODE_WORLD_WRITEABLE
. В MODE_WORLD_READABLE
другое приложение может читать созданный файл, но не может его изменять. В случае MODE_WORLD_WRITEABLE
другие приложения также имеют права на запись в созданный файл.
(2) Рекомендуемый способ - использовать режим по умолчанию, не указывая имя файла:
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
Наконец, когда у вас есть экземпляр предпочтений, вот как вы можете получить сохраненные значения из предпочтений:
int storedPreference = preferences.getInt("storedInt", 0);
Чтобы сохранить значения в файле предпочтений, необходимо использовать объект SharedPreference.Editor
. Editor
является вложенным интерфейсом класса SharedPreference
.
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();
Editor также поддерживает такие методы, как remove()
и clear()
для удаления значения предпочтения из файла.
Activity Preferences:
Общие предпочтения могут использоваться другими компонентами приложения. Но если вам не нужно делиться предпочтениями с другими компонентами и вы хотите иметь личные предпочтения. Вы можете сделать это с помощью метода getPreferences()
активности. Метод getPreference
использует метод getSharedPreferences()
с именем класса активности для имени файла предпочтений.
Ниже приведен код для получения предпочтений:
SharedPreferences preferences = getPreferences(MODE_PRIVATE);
int storedPreference = preferences.getInt("storedInt", 0);
Код для хранения значений также такой же, как и в случае общих предпочтений.
SharedPreferences preferences = getPreference(MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();
Вы также можете использовать другие методы, например, хранить состояние активности в базе данных. Примечание Android также содержит пакет под названием android.preference
. Пакет определяет классы для реализации пользовательского интерфейса предпочтений приложения.
Чтобы посмотреть другие примеры, ознакомьтесь с постом Data Storage на сайте разработчиков Android.
Вы должны использовать общие предпочтения:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
prefs.edit().putString("my_pref", "my_value").commit();
И получить их:
String value = prefs.getString("my_pref", "default Value");
Эти предпочтения постоянны, а также интегрированы с деятельностью по предпочтениям.