Создание данных, персистентных в андроиде

В моем приложении существуют некоторые специализированные настройки, которые должны быть доступны мне, в следующий раз, когда мое приложение запускает.

Другими словами, я хочу, чтобы данные были доступны через сессии цикла приложения.

Может это быть достигнутым, не используя базу данных (sqlite).

58
задан Janusz 22 July 2010 в 14:46
поделиться

2 ответа

Многие приложения могут предоставлять возможность фиксировать предпочтения пользователя по настройкам конкретного приложения или действия. Для поддержки этого Android предоставляет простой набор API.

Предпочтения обычно представляют собой пары имя-значение. Они могут храниться как "Общие предпочтения" в различных действиях приложения (обратите внимание, что в настоящее время они не могут быть общими для разных процессов). Или это может быть что-то, что должно храниться конкретно для какого-то вида деятельности.

  1. Общие предпочтения: Общие предпочтения могут использоваться всеми компонентами (действиями, сервисами и т.д.) вне приложения.

  2. Предпочтения, управляемые деятельностью: Эти предпочтения могут быть использованы только в деятельности и не могут быть использованы другими компонентами приложения.

Общие предпочтения:

Управление общими предпочтениями осуществляется с помощью метода 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.

101
ответ дан 24 November 2019 в 18:51
поделиться

Вы должны использовать общие предпочтения:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
prefs.edit().putString("my_pref", "my_value").commit();

И получить их:

String value = prefs.getString("my_pref", "default Value");

Эти предпочтения постоянны, а также интегрированы с деятельностью по предпочтениям.

19
ответ дан 24 November 2019 в 18:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: