SlideShare a Scribd company logo
Android приложение

Сохранение данных в приложении
Возможные варианты
●

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

19:58

Сохранение пар ключ-значений для примитивных типов

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

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

●

Сохранение пар ключ-значений для примитивных типов

Внутренняя память
–

19:58

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

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

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

●

Внутренняя память
–

●

Сохранение пар ключ-значений для примитивных типов
Сохранение данных на внутренней памяти устройства

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

19:58

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

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

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

●

Внутренняя память
–

●

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

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

●

Сохранение пар ключ-значений для примитивных типов

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

База данный SQLite
–

19:58

Сохранение структурированных данных в БД

5 из 41
Настройки (Shared preferences)
●
●

Класс SharedPreferences
Позволяет сохранять данные примитивных
типов: boolean, float, int, long и string.

19:58

6 из 41
Настройки (Shared preferences)
●
●

●

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

19:58

7 из 41
Настройки (Shared preferences)
●
●

●

●

Класс SharedPreferences
Позволяет сохранять данные примитивных
типов: boolean, float, int, long и string.
Данные хранятся парами ключ-значение. Ключ
типа String.
Сохранение данных выполняется для всех
сессий пользователя, даже если приложение
будет убито.

19:58

8 из 41
Настройки (Shared preferences)
●

2 варианта загрузки настроек в приложение:
–

19:58

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

9 из 41
Настройки (Shared preferences)
●

2 варианта загрузки настроек в приложение:
–

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

–

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

19:58

10 из 41
Настройки (Shared preferences)
●

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

19:58

11 из 41
Настройки (Shared preferences)
●

●

Для изменения настроек необходимо получить объект
SharedPreferences.Editor
Добавление значений производиться методами типа:
putBoolean(String key, boolean value);
putString(String key, String value);

19:58

12 из 41
Настройки (Shared preferences)
●

●

●

Для изменения настроек необходимо получить объект
SharedPreferences.Editor
Добавление значений производиться методами типа:
putBoolean(String key, boolean value);
putString(String key, String value);
Сохранение настроек производиться методом commit().

19:58

13 из 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

14 из 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

15 из 41
Настройки (Shared preferences)
●

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

19:58

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

16 из 41
Настройки (Shared preferences)
●

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

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

–

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

19:58

17 из 41
Настройки (Shared preferences)
●

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

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

–

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

–

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

19:58

18 из 41
Настройки (Shared preferences)
●

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

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

–

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

–

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

–

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

19:58

19 из 41
Настройки (Shared preferences)
●

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

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

–

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

–

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

–

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

–

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

19:58

20 из 41
Внутренняя память приложения
●

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

19:58

21 из 41
Внутренняя память приложения
●

●

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

19:58

22 из 41
Внутренняя память приложения
●

●

●

По-умолчанию файлы во внутренней памяти недоступны
другим приложениям и пользователю.
Файлы удаляются вместе с приложением.
Для создания файла применяется метод
FileOutputStream openFileOutput(String name, int mode).

19:58

23 из 41
Внутренняя память приложения
●

●

●

●

По-умолчанию файлы во внутренней памяти недоступны
другим приложениям и пользователю.
Файлы удаляются вместе с приложением.
Для создания файла применяется метод
FileOutputStream openFileOutput(String name, int mode).
Для записи в файл — метод write().

19:58

24 из 41
Внутренняя память приложения
●

●

●

По-умолчанию файлы во внутренней памяти недоступны
другим приложениям и пользователю.
Файлы удаляются вместе с приложением.
Для создания файла применяется метод
FileOutputStream openFileOutput(String name, int mode).

●

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

●

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

19:58

25 из 41
Внутренняя память приложения
●

●

●

По-умолчанию файлы во внутренней памяти недоступны
другим приложениям и пользователю.
Файлы удаляются вместе с приложением.
Для создания файла применяется метод
FileOutputStream openFileOutput(String name, int mode).

●

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

●

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

●

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

19:58

26 из 41
Внутренняя память приложения
●

●

●

По-умолчанию файлы во внутренней памяти недоступны
другим приложениям и пользователю.
Файлы удаляются вместе с приложением.
Для создания файла применяется метод
FileOutputStream openFileOutput(String name, int mode).

●

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

●

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

●

●

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

19:58

27 из 41
Внутренняя память приложения
●

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

19:58

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

28 из 41
Внутренняя память приложения
●

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

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

–

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

19:58

29 из 41
Внутренняя память приложения
●

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

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

–

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

–

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

19:58

30 из 41
Внутренняя память приложения
●

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

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

–

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

–

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

–

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

19:58

31 из 41
Внутренняя память приложения
●

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

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

–

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

–

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

–

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

–

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

19:58

32 из 41
Внешняя память
●

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

19:58

33 из 41
Внешняя память
●

●

SD-карта памяти или встроенная память для хранения
информации.
Файлы доступны всем и могут быть изменены (или
удалены) пользователем.

19:58

34 из 41
Внешняя память
●

●

●

SD-карта памяти или встроенная память для хранения
информации.
Файлы доступны всем и могут быть изменены (или
удалены) пользователем.
Метод для проверки доступности внешней памяти:
getExternalStorageState()

19:58

35 из 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

36 из 41
Внешняя память
●

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

19:58

37 из 41
Внешняя память
●

●

Доступ к файлам через метод
File getExternalFilesDir(String type).
type — тип возвращаемой директории: DIRECTORY_MUSIC,
DIRECTORY_PODCASTS, DIRECTORY_RINGTONES,
DIRECTORY_ALARMS, DIRECTORY_NOTIFICATIONS,
DIRECTORY_PICTURES, DIRECTORY_MOVIES или null.

19:58

38 из 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

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).
Доступ к каталогу хранения кэш файлов
File getExternalCacheDir()

19:58

40 из 41
Окно настроек
●

●

●

Базовый класс — PreferenceActivity
Начиная с API Level 11 рекомендуется использовать
PreferenceFragment
Основные стандартные настройки:
–

CheckBoxPreference

–

ListPreference

–

EditTextPreference

19:58

41 из 41

More Related Content

What's hot

Java осень 2014 занятие 3
Java осень 2014 занятие 3Java осень 2014 занятие 3
Java осень 2014 занятие 3
Technopark
 
C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.
Igor Shkulipa
 
C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.
Igor Shkulipa
 
Java осень 2014 занятие 7
Java осень 2014 занятие 7Java осень 2014 занятие 7
Java осень 2014 занятие 7
Technopark
 
Что нам стоит DAL построить? Акуляков Артём D2D Just.NET
Что нам стоит DAL построить? Акуляков Артём D2D Just.NETЧто нам стоит DAL построить? Акуляков Артём D2D Just.NET
Что нам стоит DAL построить? Акуляков Артём D2D Just.NET
Dev2Dev
 
Модульная структура. Цветцих Денис D2D Just.NET
Модульная структура. Цветцих Денис D2D Just.NETМодульная структура. Цветцих Денис D2D Just.NET
Модульная структура. Цветцих Денис D2D Just.NET
Dev2Dev
 
C++ STL & Qt. Занятие 10.
C++ STL & Qt. Занятие 10.C++ STL & Qt. Занятие 10.
C++ STL & Qt. Занятие 10.
Igor Shkulipa
 
C++ STL & Qt. Занятие 02.
C++ STL & Qt. Занятие 02.C++ STL & Qt. Занятие 02.
C++ STL & Qt. Занятие 02.
Igor Shkulipa
 
C++ STL & Qt. Занятие 04.
C++ STL & Qt. Занятие 04.C++ STL & Qt. Занятие 04.
C++ STL & Qt. Занятие 04.
Igor Shkulipa
 
Java осень 2014 занятие 8
Java осень 2014 занятие 8Java осень 2014 занятие 8
Java осень 2014 занятие 8
Technopark
 
C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.
Igor Shkulipa
 
C++ STL & Qt. Занятие 03.
C++ STL & Qt. Занятие 03.C++ STL & Qt. Занятие 03.
C++ STL & Qt. Занятие 03.
Igor Shkulipa
 
Глава 2: Среда разработки NetBeans
Глава 2: Среда разработки NetBeansГлава 2: Среда разработки NetBeans
Глава 2: Среда разработки NetBeansmetaform
 
Создание графического интерфейса пользователя мобильных Android приложений (ч...
Создание графического интерфейса пользователя мобильных Android приложений (ч...Создание графического интерфейса пользователя мобильных Android приложений (ч...
Создание графического интерфейса пользователя мобильных Android приложений (ч...
metaform
 
ASP.NET MVC за пределами Hello World. Дятлов Александр D2D Just.NET
ASP.NET MVC за пределами Hello World. Дятлов Александр D2D Just.NETASP.NET MVC за пределами Hello World. Дятлов Александр D2D Just.NET
ASP.NET MVC за пределами Hello World. Дятлов Александр D2D Just.NET
Dev2Dev
 
C++ STL & Qt. Занятие 08.
C++ STL & Qt. Занятие 08.C++ STL & Qt. Занятие 08.
C++ STL & Qt. Занятие 08.
Igor Shkulipa
 
Moxy. Как правильно пользоваться? / Юрий Шмаков (Arello Mobile)
Moxy. Как правильно пользоваться? / Юрий Шмаков (Arello Mobile)Moxy. Как правильно пользоваться? / Юрий Шмаков (Arello Mobile)
Moxy. Как правильно пользоваться? / Юрий Шмаков (Arello Mobile)
Ontico
 
Работа с БД в Java
Работа с БД в JavaРабота с БД в Java
Работа с БД в Java
metaform
 
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Javametaform
 
8. java lecture threads
8. java lecture threads8. java lecture threads
8. java lecture threadsMERA_school
 

What's hot (20)

Java осень 2014 занятие 3
Java осень 2014 занятие 3Java осень 2014 занятие 3
Java осень 2014 занятие 3
 
C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.
 
C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.
 
Java осень 2014 занятие 7
Java осень 2014 занятие 7Java осень 2014 занятие 7
Java осень 2014 занятие 7
 
Что нам стоит DAL построить? Акуляков Артём D2D Just.NET
Что нам стоит DAL построить? Акуляков Артём D2D Just.NETЧто нам стоит DAL построить? Акуляков Артём D2D Just.NET
Что нам стоит DAL построить? Акуляков Артём D2D Just.NET
 
Модульная структура. Цветцих Денис D2D Just.NET
Модульная структура. Цветцих Денис D2D Just.NETМодульная структура. Цветцих Денис D2D Just.NET
Модульная структура. Цветцих Денис D2D Just.NET
 
C++ STL & Qt. Занятие 10.
C++ STL & Qt. Занятие 10.C++ STL & Qt. Занятие 10.
C++ STL & Qt. Занятие 10.
 
C++ STL & Qt. Занятие 02.
C++ STL & Qt. Занятие 02.C++ STL & Qt. Занятие 02.
C++ STL & Qt. Занятие 02.
 
C++ STL & Qt. Занятие 04.
C++ STL & Qt. Занятие 04.C++ STL & Qt. Занятие 04.
C++ STL & Qt. Занятие 04.
 
Java осень 2014 занятие 8
Java осень 2014 занятие 8Java осень 2014 занятие 8
Java осень 2014 занятие 8
 
C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.
 
C++ STL & Qt. Занятие 03.
C++ STL & Qt. Занятие 03.C++ STL & Qt. Занятие 03.
C++ STL & Qt. Занятие 03.
 
Глава 2: Среда разработки NetBeans
Глава 2: Среда разработки NetBeansГлава 2: Среда разработки NetBeans
Глава 2: Среда разработки NetBeans
 
Создание графического интерфейса пользователя мобильных Android приложений (ч...
Создание графического интерфейса пользователя мобильных Android приложений (ч...Создание графического интерфейса пользователя мобильных Android приложений (ч...
Создание графического интерфейса пользователя мобильных Android приложений (ч...
 
ASP.NET MVC за пределами Hello World. Дятлов Александр D2D Just.NET
ASP.NET MVC за пределами Hello World. Дятлов Александр D2D Just.NETASP.NET MVC за пределами Hello World. Дятлов Александр D2D Just.NET
ASP.NET MVC за пределами Hello World. Дятлов Александр D2D Just.NET
 
C++ STL & Qt. Занятие 08.
C++ STL & Qt. Занятие 08.C++ STL & Qt. Занятие 08.
C++ STL & Qt. Занятие 08.
 
Moxy. Как правильно пользоваться? / Юрий Шмаков (Arello Mobile)
Moxy. Как правильно пользоваться? / Юрий Шмаков (Arello Mobile)Moxy. Как правильно пользоваться? / Юрий Шмаков (Arello Mobile)
Moxy. Как правильно пользоваться? / Юрий Шмаков (Arello Mobile)
 
Работа с БД в Java
Работа с БД в JavaРабота с БД в Java
Работа с БД в Java
 
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Java
 
8. java lecture threads
8. java lecture threads8. java lecture threads
8. java lecture threads
 

Similar to Лекция Android. Хранение данных

Lesson 4 программы
Lesson 4 программыLesson 4 программы
Lesson 4 программы
Ромашко Александра
 
Ice Php Framework Preview Release
Ice Php Framework Preview ReleaseIce Php Framework Preview Release
Ice Php Framework Preview Release
Denis Shestakov
 
IntelliJ IDEA: architecture, performance, development process
IntelliJ IDEA: architecture, performance, development processIntelliJ IDEA: architecture, performance, development process
IntelliJ IDEA: architecture, performance, development processchashnikov
 
Windbg: когда у нас не воспроизводится. Александр Головач ➠ CoreHard Autumn ...
Windbg: когда у нас не воспроизводится. Александр Головач ➠  CoreHard Autumn ...Windbg: когда у нас не воспроизводится. Александр Головач ➠  CoreHard Autumn ...
Windbg: когда у нас не воспроизводится. Александр Головач ➠ CoreHard Autumn ...
corehard_by
 
Стажировка-2015. Разработка. Занятие 10 (часть 1). Конфиги, сборка, автотесты
Стажировка-2015. Разработка. Занятие 10 (часть 1). Конфиги, сборка, автотестыСтажировка-2015. Разработка. Занятие 10 (часть 1). Конфиги, сборка, автотесты
Стажировка-2015. Разработка. Занятие 10 (часть 1). Конфиги, сборка, автотесты
7bits
 
Стажировка-2013, разработчики, занятие 6. Внешние конфиги, сборка, автотесты
Стажировка-2013, разработчики, занятие 6. Внешние конфиги, сборка, автотестыСтажировка-2013, разработчики, занятие 6. Внешние конфиги, сборка, автотесты
Стажировка-2013, разработчики, занятие 6. Внешние конфиги, сборка, автотесты7bits
 
Масштабируемая архитектура фронтенда
Масштабируемая архитектура фронтендаМасштабируемая архитектура фронтенда
Масштабируемая архитектура фронтенда
Roman Dvornov
 
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 47bits
 
Add data to r package
Add data to r packageAdd data to r package
Add data to r package
Алексей Селезнёв
 
Владислав Грязнов "Многозадачность в PHP"
Владислав Грязнов "Многозадачность в PHP"Владислав Грязнов "Многозадачность в PHP"
Владислав Грязнов "Многозадачность в PHP"
Fwdays
 
Стажировка-2014, занятие 3. Конфиги, сборка, автоматические тесты.
Стажировка-2014, занятие 3. Конфиги, сборка, автоматические тесты.Стажировка-2014, занятие 3. Конфиги, сборка, автоматические тесты.
Стажировка-2014, занятие 3. Конфиги, сборка, автоматические тесты.7bits
 
6 кареев киров
6 кареев киров6 кареев киров
6 кареев кировqasib
 
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потеряхМониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
Sveta Smirnova
 
Мониторинг и отладка MySQL: максимум информации при минимальных потерях / Све...
Мониторинг и отладка MySQL: максимум информации при минимальных потерях / Све...Мониторинг и отладка MySQL: максимум информации при минимальных потерях / Све...
Мониторинг и отладка MySQL: максимум информации при минимальных потерях / Све...
Ontico
 

Similar to Лекция Android. Хранение данных (14)

Lesson 4 программы
Lesson 4 программыLesson 4 программы
Lesson 4 программы
 
Ice Php Framework Preview Release
Ice Php Framework Preview ReleaseIce Php Framework Preview Release
Ice Php Framework Preview Release
 
IntelliJ IDEA: architecture, performance, development process
IntelliJ IDEA: architecture, performance, development processIntelliJ IDEA: architecture, performance, development process
IntelliJ IDEA: architecture, performance, development process
 
Windbg: когда у нас не воспроизводится. Александр Головач ➠ CoreHard Autumn ...
Windbg: когда у нас не воспроизводится. Александр Головач ➠  CoreHard Autumn ...Windbg: когда у нас не воспроизводится. Александр Головач ➠  CoreHard Autumn ...
Windbg: когда у нас не воспроизводится. Александр Головач ➠ CoreHard Autumn ...
 
Стажировка-2015. Разработка. Занятие 10 (часть 1). Конфиги, сборка, автотесты
Стажировка-2015. Разработка. Занятие 10 (часть 1). Конфиги, сборка, автотестыСтажировка-2015. Разработка. Занятие 10 (часть 1). Конфиги, сборка, автотесты
Стажировка-2015. Разработка. Занятие 10 (часть 1). Конфиги, сборка, автотесты
 
Стажировка-2013, разработчики, занятие 6. Внешние конфиги, сборка, автотесты
Стажировка-2013, разработчики, занятие 6. Внешние конфиги, сборка, автотестыСтажировка-2013, разработчики, занятие 6. Внешние конфиги, сборка, автотесты
Стажировка-2013, разработчики, занятие 6. Внешние конфиги, сборка, автотесты
 
Масштабируемая архитектура фронтенда
Масштабируемая архитектура фронтендаМасштабируемая архитектура фронтенда
Масштабируемая архитектура фронтенда
 
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4
 
Add data to r package
Add data to r packageAdd data to r package
Add data to r package
 
Владислав Грязнов "Многозадачность в PHP"
Владислав Грязнов "Многозадачность в PHP"Владислав Грязнов "Многозадачность в PHP"
Владислав Грязнов "Многозадачность в PHP"
 
Стажировка-2014, занятие 3. Конфиги, сборка, автоматические тесты.
Стажировка-2014, занятие 3. Конфиги, сборка, автоматические тесты.Стажировка-2014, занятие 3. Конфиги, сборка, автоматические тесты.
Стажировка-2014, занятие 3. Конфиги, сборка, автоматические тесты.
 
6 кареев киров
6 кареев киров6 кареев киров
6 кареев киров
 
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потеряхМониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
 
Мониторинг и отладка MySQL: максимум информации при минимальных потерях / Све...
Мониторинг и отладка MySQL: максимум информации при минимальных потерях / Све...Мониторинг и отладка MySQL: максимум информации при минимальных потерях / Све...
Мониторинг и отладка MySQL: максимум информации при минимальных потерях / Све...
 

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

  • 2. Возможные варианты ● Shared preferences (настройки) – 19:58 Сохранение пар ключ-значений для примитивных типов 2 из 41
  • 3. Возможные варианты ● Shared preferences (настройки) – ● Сохранение пар ключ-значений для примитивных типов Внутренняя память – 19:58 Сохранение данных на внутренней памяти устройства 3 из 41
  • 4. Возможные варианты ● Shared preferences (настройки) – ● Внутренняя память – ● Сохранение пар ключ-значений для примитивных типов Сохранение данных на внутренней памяти устройства Внешняя память – 19:58 Сохранение данных на внешней памяти устройства 4 из 41
  • 5. Возможные варианты ● Shared preferences (настройки) – ● Внутренняя память – ● Сохранение данных на внутренней памяти устройства Внешняя память – ● Сохранение пар ключ-значений для примитивных типов Сохранение данных на внешней памяти устройства База данный SQLite – 19:58 Сохранение структурированных данных в БД 5 из 41
  • 6. Настройки (Shared preferences) ● ● Класс SharedPreferences Позволяет сохранять данные примитивных типов: boolean, float, int, long и string. 19:58 6 из 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
  • 11. Настройки (Shared preferences) ● Для изменения настроек необходимо получить объект SharedPreferences.Editor 19:58 11 из 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
  • 16. Настройки (Shared preferences) ● Особенности: – 19:58 метод contains(String key) для проверки наличия настройки; 16 из 41
  • 17. Настройки (Shared preferences) ● Особенности: – метод contains(String key) для проверки наличия настройки; – метод Map<String, ?> getAll() возвращает все настройки из файла; 19:58 17 из 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
  • 21. Внутренняя память приложения ● По-умолчанию файлы во внутренней памяти недоступны другим приложениям и пользователю. 19:58 21 из 41
  • 22. Внутренняя память приложения ● ● По-умолчанию файлы во внутренней памяти недоступны другим приложениям и пользователю. Файлы удаляются вместе с приложением. 19:58 22 из 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
  • 28. Внутренняя память приложения ● Особенности: – 19:58 для сохранения кэша рекомендуется использовать метод getCacheDir(); 28 из 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
  • 33. Внешняя память ● SD-карта памяти или встроенная память для хранения информации. 19:58 33 из 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
  • 37. Внешняя память ● Доступ к файлам через метод File getExternalFilesDir(String type). 19:58 37 из 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