Лекция android. Хранение данных

Post on 16-Jun-2015

2.450 Views

Category:

Education

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Сохранение данных в android приложениях. Варианты, примеры использования.

TRANSCRIPT

Android приложение

Сохранение данных в приложении

19:58 2 из 41

Возможные варианты

● Shared preferences (настройки)– Сохранение пар ключ-значений для примитивных типов

19:58 3 из 41

Возможные варианты

● Shared preferences (настройки)– Сохранение пар ключ-значений для примитивных типов

● Внутренняя память– Сохранение данных на внутренней памяти устройства

19:58 4 из 41

Возможные варианты

● Shared preferences (настройки)– Сохранение пар ключ-значений для примитивных типов

● Внутренняя память– Сохранение данных на внутренней памяти устройства

● Внешняя память– Сохранение данных на внешней памяти устройства

19:58 5 из 41

Возможные варианты

● Shared preferences (настройки)– Сохранение пар ключ-значений для примитивных типов

● Внутренняя память– Сохранение данных на внутренней памяти устройства

● Внешняя память– Сохранение данных на внешней памяти устройства

● База данный SQLite– Сохранение структурированных данных в БД

19:58 6 из 41

Настройки (Shared preferences)

● Класс SharedPreferences ● Позволяет сохранять данные примитивных

типов: boolean, float, int, long и string.

19:58 7 из 41

Настройки (Shared preferences)

● Класс SharedPreferences ● Позволяет сохранять данные примитивных

типов: boolean, float, int, long и string.● Данные хранятся парами ключ-значение. Ключ

типа String.

19:58 8 из 41

Настройки (Shared preferences)

● Класс SharedPreferences ● Позволяет сохранять данные примитивных

типов: boolean, float, int, long и string.● Данные хранятся парами ключ-значение. Ключ

типа String.● Сохранение данных выполняется для всех

сессий пользователя, даже если приложение будет убито.

19:58 9 из 41

Настройки (Shared preferences)

● 2 варианта загрузки настроек в приложение:– getSharedPreferences() - используется, если

необходимо несколько файлов настроек, определяемых именем (первый параметр);

19:58 10 из 41

Настройки (Shared preferences)

● 2 варианта загрузки настроек в приложение:– getSharedPreferences() - используется, если

необходимо несколько файлов настроек, определяемых именем (первый параметр);

– getPreferences() - используется, если нужен только один файл настроек. Имя не указывается.

19:58 11 из 41

Настройки (Shared preferences)

● Для изменения настроек необходимо получить объект SharedPreferences.Editor

19:58 12 из 41

Настройки (Shared preferences)

● Для изменения настроек необходимо получить объект SharedPreferences.Editor

● Добавление значений производиться методами типа: putBoolean(String key, boolean value);putString(String key, String value);

19:58 13 из 41

Настройки (Shared preferences)

● Для изменения настроек необходимо получить объект SharedPreferences.Editor

● Добавление значений производиться методами типа: putBoolean(String key, boolean value);putString(String key, String value);

● Сохранение настроек производиться методом commit().

19:58 14 из 41

Настройки (Shared preferences)

● Для изменения настроек необходимо получить объект SharedPreferences.Editor

● Добавление значений производиться методами типа: putBoolean(String key, boolean value);putString(String key, String value);

● Сохранение настроек производиться методом commit().

● Для чтения значений используются методы типа:getBoolean(String key, boolean defValue);getString(String key, String defValue);

19:58 15 из 41

Настройки (Shared preferences)

public class Calc extends Activity { public static final String PREFS_NAME = "MyPrefsFile"; @Override protected void onCreate(Bundle state) { super.onCreate(state); . . . // Восстановление настроек SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); boolean silent = settings.getBoolean("silentMode", false); setSilent(silent); }

@Override protected void onStop() { super.onStop();

// Получаем объект Editor для изменения настроек SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); SharedPreferences.Editor editor = settings.edit(); editor.putBoolean("silentMode", mSilentMode); // Сохранить изменения! editor.commit(); }}

19:58 16 из 41

Настройки (Shared preferences)

● Особенности:– метод contains(String key) для проверки наличия настройки;

19:58 17 из 41

Настройки (Shared preferences)

● Особенности:– метод contains(String key) для проверки наличия настройки;

– метод Map<String, ?> getAll() возвращает все настройки из файла;

19:58 18 из 41

Настройки (Shared preferences)

● Особенности:– метод contains(String key) для проверки наличия настройки;

– метод Map<String, ?> getAll() возвращает все настройки из файла;

– метод registerOnSharedPreferenceChangeListener() позволяет зарегистрировать callback, реагирующий на изменение настроек;

19:58 19 из 41

Настройки (Shared preferences)

● Особенности:– метод contains(String key) для проверки наличия настройки;

– метод Map<String, ?> getAll() возвращает все настройки из файла;

– метод registerOnSharedPreferenceChangeListener() позволяет зарегистрировать callback, реагирующий на изменение настроек;

– метод clear() - удаляет все настройки из SharedPreferences.Editor;

19:58 20 из 41

Настройки (Shared preferences)

● Особенности:– метод contains(String key) для проверки наличия настройки;

– метод Map<String, ?> getAll() возвращает все настройки из файла;

– метод registerOnSharedPreferenceChangeListener() позволяет зарегистрировать callback, реагирующий на изменение настроек;

– метод clear() - удаляет все настройки из SharedPreferences.Editor;

– метод remove(String key) — помечает значение для удаления, которое будет произведено после вызова commit().

19:58 21 из 41

Внутренняя память приложения

● По-умолчанию файлы во внутренней памяти недоступны другим приложениям и пользователю.

19:58 22 из 41

Внутренняя память приложения

● По-умолчанию файлы во внутренней памяти недоступны другим приложениям и пользователю.

● Файлы удаляются вместе с приложением.

19:58 23 из 41

Внутренняя память приложения

● По-умолчанию файлы во внутренней памяти недоступны другим приложениям и пользователю.

● Файлы удаляются вместе с приложением.

● Для создания файла применяется методFileOutputStream openFileOutput(String name, int mode).

19:58 24 из 41

Внутренняя память приложения

● По-умолчанию файлы во внутренней памяти недоступны другим приложениям и пользователю.

● Файлы удаляются вместе с приложением.

● Для создания файла применяется методFileOutputStream openFileOutput(String name, int mode).

● Для записи в файл — метод write().

19:58 25 из 41

Внутренняя память приложения

● По-умолчанию файлы во внутренней памяти недоступны другим приложениям и пользователю.

● Файлы удаляются вместе с приложением.

● Для создания файла применяется методFileOutputStream openFileOutput(String name, int mode).

● Для записи в файл — метод write().

● Для закрытия файла — метод close().

19:58 26 из 41

Внутренняя память приложения

● По-умолчанию файлы во внутренней памяти недоступны другим приложениям и пользователю.

● Файлы удаляются вместе с приложением.

● Для создания файла применяется методFileOutputStream openFileOutput(String name, int mode).

● Для записи в файл — метод write().

● Для закрытия файла — метод close().

● Для открытия файла на чтение методFileInputStream openFileInput(String name).

19:58 27 из 41

Внутренняя память приложения

● По-умолчанию файлы во внутренней памяти недоступны другим приложениям и пользователю.

● Файлы удаляются вместе с приложением.

● Для создания файла применяется методFileOutputStream openFileOutput(String name, int mode).

● Для записи в файл — метод write().

● Для закрытия файла — метод close().

● Для открытия файла на чтение методFileInputStream openFileInput(String name).

● Для чтения из файла — метод read().

19:58 28 из 41

Внутренняя память приложения

● Особенности:

– для сохранения кэша рекомендуется использовать метод getCacheDir();

19:58 29 из 41

Внутренняя память приложения

● Особенности:

– для сохранения кэша рекомендуется использовать метод getCacheDir();

– метод getFilesDir() возвращает абсолютный путь к файлу приложения;

19:58 30 из 41

Внутренняя память приложения

● Особенности:

– для сохранения кэша рекомендуется использовать метод getCacheDir();

– метод getFilesDir() возвращает абсолютный путь к файлу приложения;

– метод getDir() содаёт (или открывает существующий) каталог во внутренней памяти;

19:58 31 из 41

Внутренняя память приложения

● Особенности:

– для сохранения кэша рекомендуется использовать метод getCacheDir();

– метод getFilesDir() возвращает абсолютный путь к файлу приложения;

– метод getDir() содаёт (или открывает существующий) каталог во внутренней памяти;

– метод deleteFile() удаляет существующий файл;

19:58 32 из 41

Внутренняя память приложения

● Особенности:

– для сохранения кэша рекомендуется использовать метод getCacheDir();

– метод getFilesDir() возвращает абсолютный путь к файлу приложения;

– метод getDir() содаёт (или открывает существующий) каталог во внутренней памяти;

– метод deleteFile() удаляет существующий файл;

– метод fileList() возвращает массив имён файлов, сохранённых во внутренней памяти.

19:58 33 из 41

Внешняя память

● SD-карта памяти или встроенная память для хранения информации.

19:58 34 из 41

Внешняя память

● SD-карта памяти или встроенная память для хранения информации.

● Файлы доступны всем и могут быть изменены (или удалены) пользователем.

19:58 35 из 41

Внешняя память

● SD-карта памяти или встроенная память для хранения информации.

● Файлы доступны всем и могут быть изменены (или удалены) пользователем.

● Метод для проверки доступности внешней памяти:getExternalStorageState()

19:58 36 из 41

Внешняя память

boolean mExternalStorageAvailable = false;

boolean mExternalStorageWriteable = false;

String state = Environment.getExternalStorageState();

if (Environment.MEDIA_MOUNTED.equals(state)) {

// Можно читать и записывать медиа файлы

mExternalStorageAvailable = mExternalStorageWriteable = true;

} else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {

// Можно только читать медиа файлы

mExternalStorageAvailable = true;

mExternalStorageWriteable = false;

} else {

// Что-то произошло. Это может быть одно из множества состояний,

// но точно известно, что нет возможности ни записывать, ни читать файлы

mExternalStorageAvailable = mExternalStorageWriteable = false;

}

19:58 37 из 41

Внешняя память

● Доступ к файлам через методFile getExternalFilesDir(String type).

19:58 38 из 41

Внешняя память

● Доступ к файлам через методFile getExternalFilesDir(String type).

● type — тип возвращаемой директории: DIRECTORY_MUSIC, DIRECTORY_PODCASTS, DIRECTORY_RINGTONES, DIRECTORY_ALARMS, DIRECTORY_NOTIFICATIONS, DIRECTORY_PICTURES, DIRECTORY_MOVIES или null.

19:58 39 из 41

Внешняя память

● Доступ к файлам через методFile getExternalFilesDir(String type).

● type — тип возвращаемой директории: DIRECTORY_MUSIC, DIRECTORY_PODCASTS, DIRECTORY_RINGTONES, DIRECTORY_ALARMS, DIRECTORY_NOTIFICATIONS, DIRECTORY_PICTURES, DIRECTORY_MOVIES или null.

● Метод предоставляет доступ к общедоступному каталогуFile getExternalStoragePublicDirectory(String type).

19:58 40 из 41

Внешняя память

● Доступ к файлам через методFile getExternalFilesDir(String type).

● type — тип возвращаемой директории: DIRECTORY_MUSIC, DIRECTORY_PODCASTS, DIRECTORY_RINGTONES, DIRECTORY_ALARMS, DIRECTORY_NOTIFICATIONS, DIRECTORY_PICTURES, DIRECTORY_MOVIES или null.

● Метод предоставляет доступ к общедоступному каталогуFile getExternalStoragePublicDirectory(String type).

● Доступ к каталогу хранения кэш файловFile getExternalCacheDir()

19:58 41 из 41

Окно настроек

● Базовый класс — PreferenceActivity

● Начиная с API Level 11 рекомендуется использовать PreferenceFragment

● Основные стандартные настройки:

– CheckBoxPreference

– ListPreference

– EditTextPreference

top related