Який найкращий спосіб зробити "налаштування програми" в Android? [зачинено]


108

Я хотів би зберегти деякі параметри програми (наприклад, URL API та деякі параметри тестування) для програми Android.

Я здебільшого працюю розробником .NET , тому я звик використовувати файл app.configдля цієї мети. Який хороший спосіб зробити це в Android?

Відповіді:


148

Багато додатків можуть надавати спосіб захоплення налаштувань користувачів у налаштуваннях певної програми чи активності. Для підтримки цього Android пропонує простий набір API.

Вподобання, як правило, називають парами значень. Вони можуть бути збережені як "Спільні налаштування" в різних видах роботи програми (зауважте, що це неможливо поділити між процесами). Або це може бути щось, що потрібно зберігати специфічно для діяльності.

  1. Спільні налаштування: спільні налаштування можуть використовуватися усіма компонентами (видами діяльності, сервісами тощо) поза програмами.

  2. Вподобання, що обробляються активністю: ці налаштування можуть використовуватися лише в процесі діяльності, а не можуть використовуватися іншими компонентами програми.

Налаштування спільного користування:

Загальні налаштування керуються за допомогою 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 на сайті розробників.


1
Дякую. Схоже, що мені потрібно зробити, це використовувати XML-файл для того, що я шукаю (або, можливо, я використовую XML як дані для фактичного завантаження), але вподобання корисно для іншої частини мого проекту.
Тім Алмонд,

1
Ви можете використовувати файл xml для init. Вам потрібно зателефонувати на щось на зразокPreferenceManager.setDefaultValues(this, R.xml.profiles_preferences, false);
Pentium10,

3
Цей посібник також може бути корисним: developer.android.com/guide/topics/ui/settings.html
Hung Tran

1
+1. Всього один крихітний шматочок, який слід пам’ятати Після встановлення значення в preferencesоб'єкті, дзвінок editor.apply()рекомендується перевищувати, editor.commit()оскільки перше буде обробляти збереження у фоновому режимі.
Anindya Chatterjee

2
Я тут трохи розгублений. SharePreferences призначений для зберігання налаштувань користувача через додаток, а не в налаштуваннях додатків. Користувача (і мене також) цікавило, де можна зберігати налаштування додатків, колишні URL-адреси API чи інші налаштування, які програма використовує для належної роботи.
альбанкс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.