Курс

"Мобильная разработка"

Итоговый проект

Нередко приложению требуется сохранять небольшие кусочки данных для дальнейшего использования, например, данные о пользователе, настройки конфигурации и т.д. Для этого в Android существует концепция Preferences или настройки. Настройки представляют собой группу пар ключ-значение, которые используются приложением

В качестве значений могут выступать данные следующих типов: Boolean, Float, Integer, Long, String, набор строк.

Настройки общие для всех activity в приложении, но также могут быть и настройки непосредственно для отдельных activity

Настройки хранятся в xml-файлах в незашифрованном виде в локальном хранилище. Они невидимы, поэтому для простого пользователя недоступны

При работе с настройками следует учитывать следующие моменты. Так как они хранятся в незашифрованном виде, то не рекомендуется сохранять в них чувствительные данные типа пароля или номеров кредитных карт. Кроме того, они представляют данные, ассоциированные с приложением, и через панель управления приложением в Настройках ОС пользователь может удалить эти данные

Общие настройки

Для работы с разделяемыми настройками в классе Activity (точнее в его базовом классе Context) имеется метод getSharedPreferences():

SharedPreferences settings = getSharedPreferences("PreferencesName", MODE_PRIVATE);

Первый параметр метода указывает на название настроек. В данном случае название - "PreferencesName". Если настроек с подобным названием нет, то они создаются при вызове данного метода. Второй параметр указывает на режим доступа. В данном случае режим описан константой MODE_PRIVATE

Класс android.content.SharedPreferences предоставляет ряд методов для управления настройками:

contains(String key): возвращает true, если в настройках сохранено значение с ключом key

getAll(): возвращает все сохраненные в настройках значения

getBoolean (String key, boolean defValue): возвращает из настроек значение типа Boolean, которое имеет ключ key. Если элемента с таким ключом не окажется, то возвращается значение defValue, передаваемое вторым параметром

getFloat(String key, float defValue): возвращает значение типа float с ключом key. Если элемента с таким ключом не окажется, то возвращается значение defValue

getInt(String key, int defValue): возвращает значение типа int с ключом key

getLong(String key, long defValue): возвращает значение типа long с ключом key

getString(String key, String defValue): возвращает строковое значение с ключом key

getStringSet(String key, Set<String> defValues): возвращает массив строк с ключом key

edit(): возвращает объект SharedPreferences.Editor, который используется для редактирования настроек

Для управления настройками используется объект класса SharedPreferences.Editor, возвращаемый метод edit()

Он определяет следующие методы:

clear(): удаляет все настройки

remove(String key): удаляет из настроек значение с ключом key

putBoolean(String key, boolean value): добавляет в настройки значение типа boolean с ключом key

putFloat(String key, float value): добавляет в настройки значение типа float с ключом key

putInt(String key, int value): добавляет в настройки значение int с ключом key

putLong(String key, long value): добавляет в настройки значение типа long с ключом key

putString(String key, String value): добавляет в настройки строку с ключом key

putStringSet(String key, Set<String> values): добавляет в настройки строковый массив

commit(): подтверждает все изменения в настройках

apply(): также, как и метод commit(), подтверждает все изменения в настройках, однако измененный объект SharedPreferences вначале сохраняется во временной памяти, и лишь затем в результате асинхронной операции записывается на мобильное устройство

 

Приватные настройки

Кроме общих настроек каждая activity может использовать приватные, к которым доступ из других activity будет невозможен. Для получения настроек уровня activity используется метод getPreferences(MODE_PRIVATE):

SharedPreferences settings = getPreferences(MODE_PRIVATE)

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

Список источников

  1. https://startandroid.ru/ru/

  2. https://metanit.com/ 

Итоговое задание

Задание: создайте простейшее мобильного приложения на любую произвольную тему, обладающего минимально необходимым, с вашей точки зрения, пользовательским функционалом. Приложение должно содержать в себе как можно больше тем пройденного материала. Оценивается: новизна, актуальность, использование специализированных библиотек, сложность алгоритмов, процент своего кода

Пример: 

1 Разработка информационного приложения с описанием достопримечательностей вашего города

2 Различные калькуляторы с дополнительным функционалом, например: конвертер валют, единиц измерения, калорий и т.д.

3 Система учета чего-либо

4 Обучающее приложение, например: счёт для детей, правила дорожного движения и т.д.

5 Система контроля и управления денежными средствами

Курс завершён!