Preferences
Tento článek popisuje, jak můžete použít rozhraní .NET Multi-Platform App UI (.NET MAUI). IPreferences
Toto rozhraní pomáhá ukládat předvolby aplikací do úložiště klíč/hodnota.
Výchozí implementace IPreferences
rozhraní je k dispozici prostřednictvím Preferences.Default
vlastnosti. Rozhraní IPreferences
i Preferences
třída jsou obsaženy v Microsoft.Maui.Storage
oboru názvů.
Typy úložiště
Preferences jsou uloženy String s klíčem. Hodnota preference musí být jedním z následujících datových typů:
DateTime
Hodnoty jsou uloženy v 64bitovém binárním (dlouhém celočíselném) formátu pomocí dvou metod definovaných DateTime
třídou:
- Metoda
ToBinary
se používá ke kódováníDateTime
hodnoty. - Metoda
FromBinary
dekóduje hodnotu.
Podívejte se do dokumentace těchto metod pro úpravy, které se můžou provést v dekódovaných hodnotách, pokud DateTime
je uložena hodnota koordinovaného univerzálního času (UTC).
Nastavení předvoleb
Preferences jsou nastaveny voláním Preferences.Set
metody a zadáním klíče a hodnoty:
// 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);
Získání předvoleb
Pokud chcete načíst hodnotu z předvoleb, předáte klíč předvolby a potom výchozí hodnotu, pokud klíč neexistuje:
string firstName = Preferences.Default.Get("first_name", "Unknown");
int age = Preferences.Default.Get("age", -1);
bool hasPets = Preferences.Default.Get("has_pets", false);
V některých scénářích možná budete muset předat klíč předvolby, za nímž následuje výchozí hodnota a její typ:
long value = Preferences.Get("master_date", (long)0);
Kontrola klíče
Může být užitečné zkontrolovat, jestli klíč existuje v předvolbách nebo ne. I když Get
jste nastavili výchozí hodnotu v případě, že klíč neexistuje, mohou existovat případy, kdy klíč existoval, ale hodnota klíče odpovídala výchozí hodnotě. Proto nemůžete spoléhat na výchozí hodnotu jako indikátor, že klíč neexistuje.
ContainsKey
Pomocí metody určete, jestli klíč existuje:
bool hasKey = Preferences.Default.ContainsKey("my_key");
Odebrání jednoho nebo všech klíčů
Pomocí metody Remove
odeberte konkrétní klíč z předvoleb:
Preferences.Default.Remove("first_name");
Pokud chcete odebrat všechny klíče, použijte metodu Clear
:
Preferences.Default.Clear();
Sdílené klíče
Předvolby uložené vaší aplikací jsou viditelné jenom pro vaši aplikaci. Můžete ale také vytvořit sdílenou předvolbu, kterou můžou používat jiná rozšíření nebo aplikace pro kukátky. Když nastavíte, odeberete nebo načtete předvolbu, můžete zadat volitelný parametr řetězce, který určuje název kontejneru, ve kterém je předvolba uložena.
Následující metody přebírají parametr řetězce s názvem sharedName
:
Preferences.Set
Preferences.Get
Preferences.Remove
Preferences.Clear
Důležité
Přečtěte si specifika implementace platformy, protože sdílené předvolby mají implementace specifické pro chování.
Integrace s nastavením systému
Preferences jsou uloženy nativně, což vám umožní integrovat nastavení do nastavení nativního systému. Postupujte podle dokumentace k platformě a integrujte se s platformou:
- Apple: Implementace sady nastavení iOS
- Android: Začínáme s obrazovkami nastavení
Rozdíly mezi platformami
Tato část popisuje rozdíly specifické pro platformu s rozhraním API předvoleb.
Všechna data jsou uložena do sdílené Preferences. Pokud není zadána žádná sharedName
, použije se výchozí sdílená Preferences hodnota. V opačném případě se název použije k získání soukromého Preferences sdíleného se zadaným názvem.
Uchování
Odinstalace aplikace způsobí odebrání všech předvoleb s výjimkou případů, kdy aplikace běží na Androidu 6.0 (úroveň 23 rozhraní API) nebo novější, a to při použití funkce automatického zálohování. Tato funkce je ve výchozím nastavení zapnutá a zachovává data aplikací, včetně sdílených Preferences, což je to, co Preferences rozhraní API používá. Můžete to zakázat podle dokumentace k automatickému zálohování Googlu.
Omezení
Pokud ukládáte velké množství textu, může to mít vliv na výkon, protože rozhraní API bylo navržené tak, aby ukládalo malé množství textu.