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 aplikace preferences 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).
Nastavit preferences
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);
Dostat preferences
Pokud chcete načíst hodnotu, kterou preferences předáte klíč předvolby, následuje výchozí hodnota, 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 v klíči preferences existuje 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íčů
Remove
Pomocí metody odeberte konkrétní klíč zpreferences:
Preferences.Default.Remove("first_name");
Pokud chcete odebrat všechny klíče, použijte metodu Clear
:
Preferences.Default.Clear();
Sdílené klíče
Uložená preferences aplikace je 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é preferences 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 preferences API.
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í, že se všechny preferences odeberou, 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.