Постоянное сохранение данных в android

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

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

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

Ответ 1

Многие приложения могут предоставить способ захвата пользовательских настроек в настройках конкретного приложения или активности. Для поддержки этого 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();

Редактор также поддерживает такие методы, как remove() и clear(), чтобы удалить значение предпочтения из файла.

Настройки активности:

Общие настройки могут использоваться другими компонентами приложения. Но если вам не нужно делиться предпочтениями с другими компонентами и вы хотите, чтобы у вас были личные предпочтения. Вы можете сделать это с помощью метода 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. Пакет определяет классы для реализации пользовательского интерфейса приложений.

Чтобы увидеть еще несколько примеров, отметьте Android Хранилище данных на сайте разработчиков.

Ответ 2

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

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

И получить его:

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

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