Багато додатків можуть надавати спосіб захоплення налаштувань користувачів у налаштуваннях певної програми чи активності. Для підтримки цього Android пропонує простий набір API.
Вподобання, як правило, називають парами значень. Вони можуть бути збережені як "Спільні налаштування" в різних видах роботи програми (зауважте, що це неможливо поділити між процесами). Або це може бути щось, що потрібно зберігати специфічно для діяльності.
Спільні налаштування: спільні налаштування можуть використовуватися усіма компонентами (видами діяльності, сервісами тощо) поза програмами.
Вподобання, що обробляються активністю: ці налаштування можуть використовуватися лише в процесі діяльності, а не можуть використовуватися іншими компонентами програми.
Налаштування спільного користування:
Загальні налаштування керуються за допомогою getSharedPreferencesметоду Contextкласу. Налаштування зберігаються у файлі за замовчуванням (1) або ви можете вказати ім'я файлу (2), яке використовуватиметься для позначення налаштувань.
(1) Ось як ви отримуєте екземпляр, коли вказуєте ім'я файлу
public static final String PREF_FILE_NAME = "PrefFile";
SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);
MODE_PRIVATE- це режим роботи для налаштувань. Це режим за замовчуванням і означає, що до створеного файлу буде доступний лише виклик програми. Інші два режими, що підтримуються, є MODE_WORLD_READABLEі MODE_WORLD_WRITEABLE. В MODE_WORLD_READABLEіншому додатку можна прочитати створений файл, але не може його змінювати. У випадку MODE_WORLD_WRITEABLEінших програм також є дозволи на запис створеного файлу.
(2) Рекомендований спосіб - використовувати режим за замовчуванням, не вказуючи ім'я файлу
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
Нарешті, як тільки у вас є екземпляр налаштувань, ось як ви можете зберегти збережені значення з налаштувань:
int storedPreference = preferences.getInt("storedInt", 0);
Для зберігання значень у SharedPreference.Editorоб'єкті файлу переваг слід використовувати. Editorє вкладеним інтерфейсом SharedPreferenceкласу.
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();
Редактор також підтримує методи, як remove()і clear()видалити значення налаштування з файлу.
Налаштування діяльності:
Загальні налаштування можуть використовуватися іншими компонентами програми. Але якщо вам не потрібно ділитися налаштуваннями з іншими компонентами, а ви хочете мати приватні налаштування. Це можна зробити за допомогою getPreferences()методу діяльності. ThegetPreferenceМетод використовує getSharedPreferences()метод з ім'ям класу активності для імені файлу переваг.
Далі йде код для отримання переваг
SharedPreferences preferences = getPreferences(MODE_PRIVATE);
int storedPreference = preferences.getInt("storedInt", 0);
Код для зберігання значень також такий же, як і у випадку спільних уподобань.
SharedPreferences preferences = getPreference(MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();
Ви також можете використовувати інші методи, такі як збереження стану активності в базі даних. Зауважте, Android також містить пакет під назвоюandroid.preference . Пакет визначає класи для реалізації інтерфейсу переваг додатків.
Щоб побачити ще декілька прикладів, перегляньте повідомлення про зберігання даних Android на сайті розробників.