Главная » Разработка для Android » Сохранение простых данных приложения

0

Методы обеспечения постоянства данных в Android дают возможность выбирать между скоростью, эффективностью и надежностью.

• Общие настройки. Легкий  механизм  для записи заранее известного набора значений  при хранении состояния UI, пользовательских или программных настроек. Общие настройки позволяют сохранять группы пар «ключ — значение»,  содержащие  примитивные данные в виде именных настроек.

• Сохранение состояния приложения. Активности содержат специаль- ные обработчики событий, предназначенные для записи текущего состояния пользовательского интерфейса в момент, когда приложение переходит в фоновый  режим.

• Файлы. Иногда запись в файл и чтение из него — единственный воз- можный вариант. Android позволяет создавать и загружать локальные файлы, используя внутренние или внешние носители, подключенные к устройству.

Есть два «легковесных» метода сохранения простых программных дан- ных в приложениях для Android  — Общие настройки  и пара обработчиков событий,  предназначенных для сохранения  информации об экземпляре Активности. Оба механизма  используют принцип  пар «ключ — значение», чтобы хранить простые, примитивные значения.

Класс SharedPreferences позволяет  создавать в приложении именован- ные ассоциативные массивы типа «ключ — значение», которые могут быть использованы различными компонентами приложения (работая  при этом в контексте одного и того же приложения).

Общие настройки  поддерживают базовые типы boolean, string, float, long и integer, что делает их идеальным средством для быстрого сохранения зна- чений по умолчанию, переменных экземпляра класса, текущего состояния UI и пользовательских настроек. Они чаще всего используются для обеспе- чения постоянства данных между пользовательскими сессиями и доступа к ним компонентов  приложения.

Активности также предоставляют обработчик onSaveInstanceState — спе- циально  для сохранения  состояния пользовательского интерфейса, когда работа Активности может быть завершена из-за нехватки ресурсов.

Этот обработчик  функционирует по тому же принципу,  что и Общие на- стройки, и предлагает параметр Bundle — ассоциативный массив вида «ключ — значение», который поддерживает примитивные типы и может быть исполь- зован для сохранения переменных экземпляра Активности. Bundle — параметр, что передается в методы onCreate и onRestoreInstanceState. Bundle, содержащий состояние UI, должен быть использован для записи значений, необходимых

Активности, чтобы вывести на экран тот самый пользовательский интерфейс, который отображался до непредвиденного закрытия.

Создание и сохранение настроек

Чтобы  создать или изменить  Общие настройки,  нужно  вызвать  метод getSharedPreferences в контексте приложения, передавая имя Общих настроек, которые вы хотите изменить.  Общие настройки  доступны для компонентов приложения, но не для других приложений.

Чтобы изменить Общие настройки, используйте класс SharedPreferences. Editor. Получите объект Editor, вызвав метод edit объекта SharedPreferences, который вы хотите изменить. Чтобы сохранить изменения, вызовите метод commit объекта Editor,  как показано в листинге 6.1.

Листинг 6.1. Создание новых Общих настроек

// Получите доступ к объекту Editor, чтобы изменить общие настройки. SharedPreferences.Editor editor = mySharedPreferences.edit();

// Задайте новые базовые типы в объекте общих настроек. editor.putBoolean("isTrue", true); editor.putFloat("lastFloat", 1f); editor.putInt("wholeNumber", 2); editor.putLong("aNumber", 3l); editor.putString("textEntryValue", "Not Empty");

// Сохраните изменения.

editor.commit();

}

Получение Общих  настроек

Как и в случае с изменением и сохранением, доступ к Общим настройкам обеспечивает метод getSharedPreferences. Передайте имя тех Общих настроек, доступ к которым хотите получить, и используйте типизированный метод get<тип>, чтобы извлечь  сохраненные  значения.Каждому геттеру пере- даются ключ и значение  по умолчанию  (используется в том случае, если для данного ключа пока что не сохранено никакое значение), как показано в листинге 6.2.

Листинг 6.2. Получение  сохраненных  Общих настроек

public static String MY_PREFS = "MY_PREFS";

public void loadPreferences() {

// Получите объект настроек.

int mode = Activity.MODE_PRIVATE;

SharedPreferences mySharedPreferences = getSharedPreferences(MY_PREFS, mode);

// Получите сохраненные значения.

boolean isTrue = mySharedPreferences.getBoolean("isTrue", false);

float lastFloat = mySharedPreferences.getFloat("lastFloat", 0f); int wholeNumber = mySharedPreferences.getInt("wholeNumber", 1); long aNumber = mySharedPreferences.getLong("aNumber", 0);

String stringPreference = mySharedPreferences. getString("textEntryValue", "");

}

Источник: Майер P. Android 2 : программирование приложений для планшетных компьютеров и смартфонов : [пер. с англ. ] / Рето Майер. — М. : Эксмо, 2011. — 672 с. — (Мировой компьютерный бестселлер).

По теме:

  • Комментарии