Лекция android. Хранение данных
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