Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az adaptív kód írása ugyanúgy képzelhető el, mint egy adaptív felhasználói felület létrehozása. Az alapkódot úgy tervezheti meg, hogy a legalacsonyabb operációsrendszer-verzión fusson, majd adjon hozzá funkciókat, ha azt észleli, hogy az alkalmazás egy magasabb verzióban fut, ahol új funkció érhető el.
Az API-szerződésekkel és a Visual Studio konfigurálásával kapcsolatos ApiInformationháttérinformációkért lásd: Adaptív verziójú alkalmazások.
Prerequisites
- Egy Windows App SDK projekt (csomagolt vagy csomagolatlan). Tekintse meg a rövid útmutatót: Az első WinUI 3-alkalmazás létrehozása.
- A Windows-futtatókörnyezet (WinRT) típusú rendszer ismerete, mivel
ApiInformationaz ellenőrzések csak a névtértípusokraWindows.*vonatkoznak.
Futtatókörnyezeti API-ellenőrzések
A kód egy feltételében használja a Windows.Foundation.Metadata.ApiInformation osztályt annak ellenőrzésére, hogy jelen van-e a meghívni kívánt API. Ezt a feltételt az alkalmazás bárhol kiértékeli, de csak olyan eszközökön értékeli ki true , ahol az API jelen van, és elérhető a híváshoz.
Important
ApiInformationaz ellenőrzések csak a névtérben lévő Windows-futtatókörnyezet típusok Windows.* esetében működnek.
Nem észlelik a WinUI-típusokat (Microsoft.UI.Xaml.*), mert ezek a típusok a Windows App SDK keretrendszercsomag részét képezik, nem pedig az operációs rendszernek, és nem regisztrálva vannak a lekérdezésre képes WinRT-metaadatokkéntApiInformation.
#if az előprocesszor-irányelvek itt sem segítenek– a rendszer fordításkor értékeli ki őket a cél-keretrendszer alapján, nem pedig a futtatókörnyezetben az alkalmazás operációs rendszer vagy SDK-verzió alapján. Ha egy WinUI-funkciót feltételesen szeretne elérhetővé tenni, ellenőrizze, hogy az alkalmazás melyik Windows App SDK-verzióra épült (lásd: Verzióadaptív alkalmazások), vagy foglalja a hívást egy try/catch blokkba, és hiba esetén alkalmazzon tartalék megoldást futásidőben.
Tip
Számos futtatókörnyezeti API-ellenőrzés befolyásolhatja az alkalmazás teljesítményét. Egyszer végezze el az ellenőrzést, és gyorsítótárazza az eredményt, majd használja a gyorsítótárazott eredményt az alkalmazásban.
Adaptív kódbeállítások
Adaptív kód kétféleképpen hozható létre:
- Alkalmazáskód – Futtatókörnyezeti API-ellenőrzések használata a mögöttes kódban. A legtöbb forgatókönyv esetében ez az ajánlott módszer.
- Állapotindítók – Olyan bővíthető állapotindítók használata, amelyek api-k jelenléte alapján aktiválják a vizualizációs állapotokat. Használjon állapotindítókat, ha az operációs rendszer verziói közötti egyszerű tulajdonság- vagy enumváltozás egy vizuális állapothoz kapcsolódik.
Példa: Számérték keresése
Ez a példa bemutatja, hogyan ellenőrizheti, hogy egy adott számérték szerepel-e a használat előtt. Ha az érték nem érhető el, a kód egy alternatívát használ.
EnergySaverStatusés PowerManager valódi Windows-futtatókörnyezet típusúak a Windows.System.Power névtérben, így ApiInformation helyesen kérdezhetők le.
if (ApiInformation.IsEnumNamedValuePresent(
"Windows.System.Power.EnergySaverStatus", "On"))
{
if (PowerManager.EnergySaverStatus == EnergySaverStatus.On)
{
// Reduce background work to save battery.
ReduceBackgroundActivity();
}
}
else
{
// Energy Saver status isn't available on this OS version; skip the check.
}
void ReduceBackgroundActivity()
{
// Pause non-essential timers, syncs, and animations here.
}
Important
Amikor gyorsítótárazza egy API-ellenőrzés eredményét, használja ezt a gyorsítótárazott értéket következetesen az alkalmazásban. Ne ismételje meg az ellenőrzést több helyen – ellenőrizze egyszer, tárolja az eredményt, és hivatkozzon rá mindenhol.
Példa: Metódus keresése
A(z) adott metódus meghívása előtt a IsMethodPresent használatával ellenőrizze, hogy elérhető-e:
DisplayRequest displayRequest = new DisplayRequest();
if (ApiInformation.IsMethodPresent(
"Windows.System.Display.DisplayRequest", "RequestActive"))
{
displayRequest.RequestActive();
}
Példa: Tulajdonság ellenőrzése
A IsPropertyPresent használatával ellenőrizze, hogy egy adott tulajdonság elérhető-e, mielőtt kiolvassa:
if (ApiInformation.IsPropertyPresent(
"Windows.System.Power.PowerManager", "RemainingChargePercent"))
{
int chargePercent = PowerManager.RemainingChargePercent;
}
Bevált gyakorlatok
| Practice | Útmutatók |
|---|---|
| Statikus sztringek használata | Az API-nevek ApiInformation használatával történő ellenőrzésekor a .NET-reflexió helyett használjon fixen beégetett karakterláncokat a futásidejű típusbetöltési problémák elkerülése érdekében |
| Gyorsítótár-eredmények | Minden API-ellenőrzés végrehajtása egyszeri indításkor, és az eredmény tárolása újrafelhasználásra |
| A minimális verzió alacsonyan tartása | Állítsa be a projekt minimális verzióját olyan alacsonyra, hogy a lehető legtágabb célközönséget érje el, és adaptív kóddal megvilágítsa az újabb operációsrendszer-verziók funkcióit |
| A minimális verzió tesztelése | Mindig tesztelje a minimálisan támogatott operációsrendszer-verziót annak ellenőrzéséhez, hogy a tartalék útvonalak megfelelően működnek-e |
Kapcsolódó tartalom
Windows developer