Preferences

Browse sample. Обзор примера

В этой статье описывается, как использовать интерфейс многоплатформенного приложения .NET (.NET MAUI). IPreferences Этот интерфейс помогает хранить настройки приложения в хранилище ключей и значений.

Реализация интерфейса по умолчанию IPreferences доступна через Preferences.Default свойство. Интерфейс IPreferences и Preferences класс содержатся в Microsoft.Maui.Storage пространстве имен.

Типы хранилищ

Preferences хранится с ключом String . Значение предпочтения должно быть одним из следующих типов данных:

Значения DateTime хранятся в 64-разрядном двоичном формате (длинное целое) с использованием двух методов, определенных классом DateTime.

  • Метод ToBinary используется для кодирования DateTime значения.
  • Метод FromBinary декодирует значение.

Ознакомьтесь с документацией по этим методам для корректировки, которые могут быть сделаны в декодированные значения при DateTime хранении, которое не является значением UTC.

Настройка параметров

Preferences задаются путем вызова Preferences.Set метода, предоставляя ключ и значение:

// Set a string value:
Preferences.Default.Set("first_name", "John");

// Set an numerical value:
Preferences.Default.Set("age", 28);

// Set a boolean value:
Preferences.Default.Set("has_pets", true);

Получение параметров

Чтобы получить значение из параметров, передайте ключ предпочтения, а затем значение по умолчанию, если ключ не существует:

string firstName = Preferences.Default.Get("first_name", "Unknown");
int age = Preferences.Default.Get("age", -1);
bool hasPets = Preferences.Default.Get("has_pets", false);

Проверка ключа

Может быть полезно проверка, если ключ существует в предпочтениях или нет. Даже если задано значение по умолчанию, если Get ключ не существует, могут возникнуть случаи, когда ключ существовал, но значение ключа соответствовало значению по умолчанию. Поэтому нельзя полагаться на значение по умолчанию в качестве индикатора того, что ключ не существует. ContainsKey Используйте метод, чтобы определить, существует ли ключ:

bool hasKey = Preferences.Default.ContainsKey("my_key");

Удаление одного или всех ключей

Remove Используйте метод для удаления определенного ключа из параметров:

Preferences.Default.Remove("first_name");

Чтобы удалить все ключи Clear , используйте метод:

Preferences.Default.Clear();

Общие ключи

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

Следующие методы принимают строковый параметр с именем sharedName:

  • Preferences.Set
  • Preferences.Get
  • Preferences.Remove
  • Preferences.Clear

Важно!

Ознакомьтесь с конкретными сведениями о реализации платформы, так как общие предпочтения имеют реализации для конкретного поведения.

Интеграция с параметрами системы

Preferences хранятся в собственном коде, что позволяет интегрировать параметры в собственные системные параметры. Для интеграции с платформой используйте документацию и примеры платформы:

Различия между платформами

В этом разделе описываются различия платформы с API параметров.

Все данные хранятся в общих данных Preferences. Если значение не sharedName указано, используется общий доступ Preferences по умолчанию. В противном случае имя используется для получения частного общего доступа Preferences с указанным именем.

Сохраняемость

Удаление приложения приводит к удалению всех настроек , за исключением случаев, когда приложение работает на Android 6.0 (уровень API 23) или более поздней версии, при использовании функции автоматического резервного копирования . Эта функция включена по умолчанию и сохраняет данные приложения, в том числе общие Preferences, что Preferences использует API. Это можно отключить, следуя документации по автоматическому резервному копированию Google.

Ограничения

Производительность может повлиять на хранение больших объемов текста, так как API был разработан для хранения небольших объемов текста.