Preferences
В этой статье описывается, как использовать интерфейс многоплатформенного приложения .NET (.NET MAUI). IPreferences
Этот интерфейс помогает хранить приложение preferences в хранилище ключей и значений.
Реализация интерфейса по умолчанию IPreferences
доступна через Preferences.Default
свойство. Интерфейс IPreferences
и Preferences
класс содержатся в Microsoft.Maui.Storage
пространстве имен.
Типы хранилищ
Preferences хранится с ключом String . Значение предпочтения должно быть одним из следующих типов данных:
Значения DateTime
хранятся в 64-разрядном двоичном формате (длинное целое) с использованием двух методов, определенных классом DateTime
.
- Метод
ToBinary
используется для кодированияDateTime
значения. - Метод
FromBinary
декодирует значение.
Ознакомьтесь с документацией по этим методам для корректировки, которые могут быть сделаны в декодированные значения при DateTime
хранении, которое не является значением UTC.
Задайте значение preferences.
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);
Get preferences
Чтобы получить значение от preferences вас, передайте ключ предпочтения, а затем значение по умолчанию, когда ключ не существует:
string firstName = Preferences.Default.Get("first_name", "Unknown");
int age = Preferences.Default.Get("age", -1);
bool hasPets = Preferences.Default.Get("has_pets", false);
В некоторых сценариях может потребоваться передать ключ предпочтения, за которым следует значение по умолчанию и его тип:
long value = Preferences.Get("master_date", (long)0);
Проверка ключа
Это может быть полезно, чтобы проверить, существует ли ключ в preferences или нет. Даже если задано значение по умолчанию, если Get
ключ не существует, могут возникнуть случаи, когда ключ существовал, но значение ключа соответствовало значению по умолчанию. Поэтому нельзя полагаться на значение по умолчанию в качестве индикатора того, что ключ не существует. ContainsKey
Используйте метод, чтобы определить, существует ли ключ:
bool hasKey = Preferences.Default.ContainsKey("my_key");
Удаление одного или всех ключей
Remove
Используйте метод для удаления определенного ключа изpreferences:
Preferences.Default.Remove("first_name");
Чтобы удалить все ключи Clear
, используйте метод:
Preferences.Default.Clear();
Общие ключи
Сохраненные preferences приложением видны только вашему приложению. Однако вы также можете создать общие предпочтения, которые можно использовать другими расширениями или приложением наблюдения. При установке, удалении или получении предпочтения можно указать необязательный строковый параметр, чтобы указать имя контейнера, в который хранится предпочтение.
Следующие методы принимают строковый параметр с именем sharedName
:
Preferences.Set
Preferences.Get
Preferences.Remove
Preferences.Clear
Внимание
Ознакомьтесь с конкретными сведениями о реализации платформы, так как общие preferences реализации зависят от поведения.
Интеграция с параметрами системы
Preferences хранятся в собственном коде, что позволяет интегрировать параметры в собственные системные параметры. Следуйте документации по платформе для интеграции с платформой:
- Apple: реализация пакета параметров iOS
- Android: начало работы с экранами параметров
Различия между платформами
В этом разделе описываются различия платформы с preferences API.
Все данные хранятся в общих данных Preferences. Если значение не sharedName
указано, используется общий доступ Preferences по умолчанию. В противном случае имя используется для получения частного общего доступа Preferences с указанным именем.
Сохраняемость
Удаление приложения приводит к удалению всех preferences , за исключением случаев, когда приложение выполняется на android 6.0 (уровень API 23) или более поздней версии, при использовании функции автоматического резервного копирования . Эта функция включена по умолчанию и сохраняет данные приложения, в том числе общие Preferences, что Preferences использует API. Это можно отключить, следуя документации по автоматическому резервному копированию Google.
Ограничения
Производительность может повлиять на хранение больших объемов текста, так как API был разработан для хранения небольших объемов текста.