Preferences
В этой статье описывается, как использовать интерфейс многоплатформенного приложения .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 хранятся в собственном коде, что позволяет интегрировать параметры в собственные системные параметры. Для интеграции с платформой используйте документацию и примеры платформы:
- Apple: реализация пакета Параметры iOS
- Пример приложения Preferences iOS
- Android: начало работы с экранами Параметры
Различия между платформами
В этом разделе описываются различия платформы с API параметров.
Все данные хранятся в общих данных Preferences. Если значение не sharedName
указано, используется общий доступ Preferences по умолчанию. В противном случае имя используется для получения частного общего доступа Preferences с указанным именем.
Сохраняемость
Удаление приложения приводит к удалению всех настроек , за исключением случаев, когда приложение работает на Android 6.0 (уровень API 23) или более поздней версии, при использовании функции автоматического резервного копирования . Эта функция включена по умолчанию и сохраняет данные приложения, в том числе общие Preferences, что Preferences использует API. Это можно отключить, следуя документации по автоматическому резервному копированию Google.
Ограничения
Производительность может повлиять на хранение больших объемов текста, так как API был разработан для хранения небольших объемов текста.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по