3. Возможные варианты
●
Shared preferences (настройки)
–
●
Сохранение пар ключ-значений для примитивных типов
Внутренняя память
–
19:58
Сохранение данных на внутренней памяти устройства
3 из 41
4. Возможные варианты
●
Shared preferences (настройки)
–
●
Внутренняя память
–
●
Сохранение пар ключ-значений для примитивных типов
Сохранение данных на внутренней памяти устройства
Внешняя память
–
19:58
Сохранение данных на внешней памяти устройства
4 из 41
5. Возможные варианты
●
Shared preferences (настройки)
–
●
Внутренняя память
–
●
Сохранение данных на внутренней памяти устройства
Внешняя память
–
●
Сохранение пар ключ-значений для примитивных типов
Сохранение данных на внешней памяти устройства
База данный SQLite
–
19:58
Сохранение структурированных данных в БД
5 из 41
7. Настройки (Shared preferences)
●
●
●
Класс SharedPreferences
Позволяет сохранять данные примитивных
типов: boolean, float, int, long и string.
Данные хранятся парами ключ-значение. Ключ
типа String.
19:58
7 из 41
8. Настройки (Shared preferences)
●
●
●
●
Класс SharedPreferences
Позволяет сохранять данные примитивных
типов: boolean, float, int, long и string.
Данные хранятся парами ключ-значение. Ключ
типа String.
Сохранение данных выполняется для всех
сессий пользователя, даже если приложение
будет убито.
19:58
8 из 41
9. Настройки (Shared preferences)
●
2 варианта загрузки настроек в приложение:
–
19:58
getSharedPreferences() - используется, если
необходимо несколько файлов настроек,
определяемых именем (первый параметр);
9 из 41
10. Настройки (Shared preferences)
●
2 варианта загрузки настроек в приложение:
–
getSharedPreferences() - используется, если
необходимо несколько файлов настроек,
определяемых именем (первый параметр);
–
getPreferences() - используется, если нужен только
один файл настроек. Имя не указывается.
19:58
10 из 41
12. Настройки (Shared preferences)
●
●
Для изменения настроек необходимо получить объект
SharedPreferences.Editor
Добавление значений производиться методами типа:
putBoolean(String key, boolean value);
putString(String key, String value);
19:58
12 из 41
13. Настройки (Shared preferences)
●
●
●
Для изменения настроек необходимо получить объект
SharedPreferences.Editor
Добавление значений производиться методами типа:
putBoolean(String key, boolean value);
putString(String key, String value);
Сохранение настроек производиться методом commit().
19:58
13 из 41
14. Настройки (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
14 из 41
15. Настройки (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
15 из 41
18. Настройки (Shared preferences)
●
Особенности:
–
метод contains(String key) для проверки наличия настройки;
–
метод Map<String, ?> getAll() возвращает все настройки из
файла;
–
метод registerOnSharedPreferenceChangeListener()
позволяет зарегистрировать callback, реагирующий на
изменение настроек;
19:58
18 из 41
19. Настройки (Shared preferences)
●
Особенности:
–
метод contains(String key) для проверки наличия настройки;
–
метод Map<String, ?> getAll() возвращает все настройки из
файла;
–
метод registerOnSharedPreferenceChangeListener()
позволяет зарегистрировать callback, реагирующий на
изменение настроек;
–
метод clear() - удаляет все настройки из
SharedPreferences.Editor;
19:58
19 из 41
20. Настройки (Shared preferences)
●
Особенности:
–
метод contains(String key) для проверки наличия настройки;
–
метод Map<String, ?> getAll() возвращает все настройки из
файла;
–
метод registerOnSharedPreferenceChangeListener()
позволяет зарегистрировать callback, реагирующий на
изменение настроек;
–
метод clear() - удаляет все настройки из
SharedPreferences.Editor;
–
метод remove(String key) — помечает значение для
удаления, которое будет произведено после вызова
commit().
19:58
20 из 41
23. Внутренняя память приложения
●
●
●
По-умолчанию файлы во внутренней памяти недоступны
другим приложениям и пользователю.
Файлы удаляются вместе с приложением.
Для создания файла применяется метод
FileOutputStream openFileOutput(String name, int mode).
19:58
23 из 41
24. Внутренняя память приложения
●
●
●
●
По-умолчанию файлы во внутренней памяти недоступны
другим приложениям и пользователю.
Файлы удаляются вместе с приложением.
Для создания файла применяется метод
FileOutputStream openFileOutput(String name, int mode).
Для записи в файл — метод write().
19:58
24 из 41
25. Внутренняя память приложения
●
●
●
По-умолчанию файлы во внутренней памяти недоступны
другим приложениям и пользователю.
Файлы удаляются вместе с приложением.
Для создания файла применяется метод
FileOutputStream openFileOutput(String name, int mode).
●
Для записи в файл — метод write().
●
Для закрытия файла — метод close().
19:58
25 из 41
26. Внутренняя память приложения
●
●
●
По-умолчанию файлы во внутренней памяти недоступны
другим приложениям и пользователю.
Файлы удаляются вместе с приложением.
Для создания файла применяется метод
FileOutputStream openFileOutput(String name, int mode).
●
Для записи в файл — метод write().
●
Для закрытия файла — метод close().
●
Для открытия файла на чтение метод
FileInputStream openFileInput(String name).
19:58
26 из 41
27. Внутренняя память приложения
●
●
●
По-умолчанию файлы во внутренней памяти недоступны
другим приложениям и пользователю.
Файлы удаляются вместе с приложением.
Для создания файла применяется метод
FileOutputStream openFileOutput(String name, int mode).
●
Для записи в файл — метод write().
●
Для закрытия файла — метод close().
●
●
Для открытия файла на чтение метод
FileInputStream openFileInput(String name).
Для чтения из файла — метод read().
19:58
27 из 41
29. Внутренняя память приложения
●
Особенности:
–
для сохранения кэша рекомендуется использовать метод
getCacheDir();
–
метод getFilesDir() возвращает абсолютный путь к файлу
приложения;
19:58
29 из 41
30. Внутренняя память приложения
●
Особенности:
–
для сохранения кэша рекомендуется использовать метод
getCacheDir();
–
метод getFilesDir() возвращает абсолютный путь к файлу
приложения;
–
метод getDir() содаёт (или открывает существующий)
каталог во внутренней памяти;
19:58
30 из 41
31. Внутренняя память приложения
●
Особенности:
–
для сохранения кэша рекомендуется использовать метод
getCacheDir();
–
метод getFilesDir() возвращает абсолютный путь к файлу
приложения;
–
метод getDir() содаёт (или открывает существующий)
каталог во внутренней памяти;
–
метод deleteFile() удаляет существующий файл;
19:58
31 из 41
32. Внутренняя память приложения
●
Особенности:
–
для сохранения кэша рекомендуется использовать метод
getCacheDir();
–
метод getFilesDir() возвращает абсолютный путь к файлу
приложения;
–
метод getDir() содаёт (или открывает существующий)
каталог во внутренней памяти;
–
метод deleteFile() удаляет существующий файл;
–
метод fileList() возвращает массив имён файлов,
сохранённых во внутренней памяти.
19:58
32 из 41
34. Внешняя память
●
●
SD-карта памяти или встроенная память для хранения
информации.
Файлы доступны всем и могут быть изменены (или
удалены) пользователем.
19:58
34 из 41
35. Внешняя память
●
●
●
SD-карта памяти или встроенная память для хранения
информации.
Файлы доступны всем и могут быть изменены (или
удалены) пользователем.
Метод для проверки доступности внешней памяти:
getExternalStorageState()
19:58
35 из 41
36. Внешняя память
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
36 из 41
38. Внешняя память
●
●
Доступ к файлам через метод
File getExternalFilesDir(String type).
type — тип возвращаемой директории: DIRECTORY_MUSIC,
DIRECTORY_PODCASTS, DIRECTORY_RINGTONES,
DIRECTORY_ALARMS, DIRECTORY_NOTIFICATIONS,
DIRECTORY_PICTURES, DIRECTORY_MOVIES или null.
19:58
38 из 41
39. Внешняя память
●
●
●
Доступ к файлам через метод
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
39 из 41
40. Внешняя память
●
●
●
●
Доступ к файлам через метод
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
40 из 41
41. Окно настроек
●
●
●
Базовый класс — PreferenceActivity
Начиная с API Level 11 рекомендуется использовать
PreferenceFragment
Основные стандартные настройки:
–
CheckBoxPreference
–
ListPreference
–
EditTextPreference
19:58
41 из 41