Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ważne
Metadane urządzenia są przestarzałe i zostaną usunięte w przyszłej wersji systemu Windows. Aby uzyskać informacje o zastąpieniu tej funkcji, zobacz Driver Package Container Metadata (Metadane kontenera pakietów sterowników).
Aplikacja platformy UWP może używać zadania w tle urządzenia do synchronizowania danych na urządzeniu peryferyjnym. Jeśli aplikacja jest skojarzona z metadanymi urządzenia, ta aplikacja urządzenia platformy UWP może również używać agenta w tle urządzenia do wykonywania aktualizacji urządzeń, takich jak aktualizacje oprogramowania układowego. Agenci w tle urządzeń podlegają zasadom, które zapewniają zgodę użytkownika i pomagają zachować żywotność baterii podczas synchronizowania i aktualizowania urządzeń.
Aby wykonać operacje synchronizacji i aktualizacji urządzenia, utwórz zadanie w tle urządzenia, które używa odpowiednio parametrów DeviceUseTrigger i DeviceServicingTrigger. Aby dowiedzieć się, jak utworzyć zadanie w tle urządzenia za pomocą przykładowego niestandardowego urządzenia USB, zobacz Tworzenie zadania w tle urządzenia.
Interfejsy API urządzeń środowiska uruchomieniowego systemu Windows nie wymagają metadanych urządzenia. Oznacza to, że aplikacja nie musi być aplikacją UWP, aby móc z nich korzystać. Aplikacje platformy UWP mogą używać tych interfejsów API do uzyskiwania dostępu do USB, urządzeń interfejsu użytkownika (HID), urządzeń Bluetooth i nie tylko. Aby uzyskać więcej informacji, zobacz Integrowanie urządzeń.
Omówienie zadań działających w tle urządzenia
Gdy użytkownicy przenoszą aplikację platformy UWP poza ekran, system Windows zawiesza aplikację w pamięci, pozwalając innym aplikacjom na pierwszy plan. Gdy aplikacja jest zawieszona, jest obecna w pamięci, ale system Windows uniemożliwił jej dalsze działanie.
Wszystkie trwające operacje urządzeń, takie jak synchronizowanie i aktualizowanie, są przerywane bez pomocy zadania w tle urządzenia. System Windows udostępnia dwa wyzwalacze zadań w tle, aby rozwiązać ten problem: DeviceUseTrigger i DeviceServicingTrigger. Te wyzwalacze umożliwiają aplikacji bezpieczne wykonywanie długotrwałych operacji synchronizacji i aktualizacji na urządzeniu peryferyjnym w tle, nawet jeśli aplikacja jest zawieszona. Aby uzyskać więcej informacji na temat zawieszenia aplikacji, zobacz Uruchamianie, wznawianie i wielozadaniowość.
| Wyzwalacz zadania w tle | Wymaga metadanych urządzenia | Opis |
|---|---|---|
| DeviceUseTrigger | Nie. | Umożliwia długotrwałe operacje synchronizacji z urządzeniem peryferyjnym lub z urządzenia peryferyjnego, gdy aplikacja jest zawieszona. Synchronizacja urządzenia w tle wymaga zatwierdzenia przez użytkownika synchronizacji w tle przez aplikację. Urządzenie musi być również podłączone lub sparowane z komputerem, z aktywnym wejściem/wyjściem, a także może mieć maksymalnie 10 minut dozwolonego działania w tle. Więcej szczegółów na temat wymuszania zasad opisano w dalszej części tego artykułu. |
| DeviceServicingTrigger | Tak | Umożliwia długotrwałe aktualizacje dla urządzeń, takie jak transfery ustawień lub aktualizacje oprogramowania układowego, gdy Twoja aplikacja jest zawieszona. Aktualizowanie urządzenia w tle wymaga zatwierdzenia przez użytkownika przy każdym użyciu zadania w tle. W przeciwieństwie do zadania w tle DeviceUseTrigger zadanie w tle DeviceServicingTrigger umożliwia ponowne uruchomienie i rozłączenie urządzenia i umożliwia maksymalnie 30 minut aktywności w tle. Więcej szczegółów na temat wymuszania zasad opisano w dalszej części tego artykułu. |
DeviceServicingTrigger wymaga metadanych urządzenia, ponieważ aplikacja musi być określona jako aplikacja uprzywilejowana w celu wykonywania operacji aktualizacji urządzenia.
Uprawnienia aplikacji
Uprzywilejowana aplikacja może wykonywać pewne krytyczne operacje na urządzeniach, takie jak długotrwałe aktualizacje urządzeń. Uprzywilejowana aplikacja to aplikacja , którą producent urządzenia autoryzuje do wykonywania tych operacji. Metadane urządzenia określają, która aplikacja, jeśli istnieje, jest wyznaczona jako aplikacja uprzywilejowana dla urządzenia.
Podczas tworzenia metadanych urządzenia za pomocą kreatora metadanych urządzenia określ aplikację na stronie Określanie informacji o aplikacji urządzenia platformy UWP . Aby uzyskać więcej informacji, zobacz Krok 2. Tworzenie metadanych urządzenia dla aplikacji urządzenia platformy UWP.
Obsługiwane protokoły
Zadania w tle urządzenia korzystające z funkcji DeviceUseTrigger i DeviceServicingTrigger umożliwiają aplikacji komunikowanie się z urządzeniami peryferyjnymi za pośrednictwem określonych protokołów. Zadania wyzwalane przez system zwykle używane przez aplikacje platformy UWP nie obsługują tych protokołów.
| Protokół | DeviceServicingTrigger | DeviceUseTrigger | Wyzwalacze systemowe |
|---|---|---|---|
| USB |
|
|
|
| HID |
|
|
|
| Bluetooth RFCOMM |
|
|
|
| Bluetooth GATT |
|
deviceusetrigger obsługuje Bluetooth GATT |
|
| Międzynarodowe Targi Poznańskie |
|
|
|
| Sieć przewodowa |
|
|
|
| Sieć Wi-Fi |
|
|
|
| IDeviceIOControl |
|
|
|
Rejestrowanie zadań w tle w manifeście pakietu aplikacji
Aplikacja wykonuje operacje synchronizacji i aktualizacji w kodzie uruchamianym w ramach zadania w tle. Ten kod jest osadzony w klasie Środowiska uruchomieniowego systemu Windows, która implementuje element IBackgroundTask (lub na dedykowanej stronie języka JavaScript dla aplikacji JavaScript). Aby użyć zadania w tle urządzenia, aplikacja musi zadeklarować ją w pliku manifestu aplikacji pierwszego planu, podobnie jak w przypadku zadań w tle wyzwalanych przez system.
W tym przykładzie pliku manifestu pakietu aplikacji deviceLibrary.SyncContent i DeviceLibrary.UpdateFirmware znajdują się punkty wejścia z aplikacji pierwszego planu. DeviceLibrary.SyncContent to punkt wejścia zadania w tle, który używa elementu DeviceUseTrigger. DeviceLibrary.UpdateFirmware to punkt wejścia dla zadania w tle, które używa elementu DeviceServicingTrigger.
<Extensions>
<Extension Category="windows.backgroundTasks" EntryPoint="DeviceLibrary.SyncContent">
<BackgroundTasks>
<m2:Task Type="deviceUse" />
</BackgroundTasks>
</Extension>
<Extension Category="windows.backgroundTasks" EntryPoint="DeviceLibrary.UpdateFirmware">
<BackgroundTasks>
<m2:Task Type="deviceServicing" />
</BackgroundTasks>
</Extension>
</Extensions>
Używanie urządzenia z zadaniami w tle urządzenia
Aby opracować aplikację w celu korzystania z zadań w tle DeviceUseTrigger i DeviceServicingTrigger, wykonaj ten podstawowy zestaw kroków. Aby uzyskać więcej informacji na temat zadań w tle, zobacz Obsługa aplikacji z zadaniami w tle.
Aplikacja rejestruje swoje zadanie w tle w manifeście aplikacji i osadza kod zadania w tle w klasie Środowiska uruchomieniowego systemu Windows, która implementuje środowisko IBackgroundTask lub na dedykowanej stronie javaScript dla aplikacji JavaScript.
Kiedy aplikacja się uruchamia, zostaje utworzony i skonfigurowany obiekt wyzwalacza dla urządzeń odpowiedniego typu, czyli DeviceUseTrigger lub DeviceServicingTrigger, oraz zapisane zostaje jego wystąpienie do wykorzystania w przyszłości.
Aplikacja sprawdza, czy zadanie w tle zostało wcześniej zarejestrowane, a jeśli nie, rejestruje je w wyzwalaczu urządzenia. Aplikacja nie może ustawiać warunków dla zadania skojarzonego z tym wyzwalaczem.
Kiedy aplikacja musi uruchomić zadanie w tle, wywołuje metodę aktywacji RequestAsync na obiekcie wyzwalacza urządzenia.
Zadanie w tle nie jest ograniczane jak inne systemowe zadania w tle (nie ma limitu czasu procesora), ale działa z obniżonym priorytetem, aby zapewnić responsywność aplikacji działających w pierwszym planie.
Na podstawie typu wyzwalacza system Windows sprawdza, czy zostały spełnione niezbędne zasady, w tym żądanie zgody użytkownika na operację przed rozpoczęciem zadania w tle.
System Windows monitoruje warunki systemowe i środowisko uruchomieniowe zadań, a w razie potrzeby anuluje zadanie, jeśli wymagane warunki nie zostaną już spełnione.
Gdy zadania w tle zgłaszają postęp lub ukończenie, aplikacja odbiera te zdarzenia za pomocą zdarzeń dotyczących postępu i ukończenia w ramach zarejestrowanego zadania.
Ważne kwestie, które należy wziąć pod uwagę podczas korzystania z zadań w tle urządzenia
Możliwość programowego wyzwalania zadań w tle korzystających z funkcji DeviceUseTrigger i DeviceServicingTrigger jest ograniczona tylko do zadań w tle urządzenia.
System Windows wymusza pewne zasady w celu zapewnienia zgody użytkownika podczas aktualizowania urządzeń peryferyjnych. W przypadku synchronizowania i aktualizowania urządzeń peryferyjnych wymusza się stosowanie większej liczby zasad w celu zachowania trwałości baterii użytkownika.
System Windows może anulować zadania w tle korzystające z funkcji DeviceUseTrigger i DeviceServicingTrigger, gdy określone wymagania dotyczące zasad nie są już spełnione, w tym maksymalny czas w tle (czas zegara ściany). Podczas korzystania z tych zadań w tle do interakcji z urządzeniem peryferyjnym należy wziąć pod uwagę te wymagania dotyczące zasad.
Wskazówka
Aby zobaczyć, jak działają te zadania w tle, pobierz przykład. Przykład niestandardowego urządzenia USB przedstawia zadanie w tle, które wykonuje synchronizację urządzenia z urządzeniem DeviceUseTrigger.
Zgoda użytkownika
Gdy aplikacja używa elementu DeviceUseTrigger lub DeviceServicingTrigger, system Windows wymusza zasady, aby upewnić się, że użytkownik daje aplikacji uprawnienia dostępu do urządzenia w tle na potrzeby synchronizowania i aktualizowania zawartości. Zasady są również wymuszane, aby zachować żywotność baterii użytkownika podczas synchronizowania i aktualizowania urządzeń peryferyjnych.
Zgoda użytkownika synchronizacji urządzeń
Zadanie w tle korzystające z funkcji DeviceUseTrigger wymaga jednorazowej zgody użytkownika umożliwiającej synchronizację aplikacji w tle. Ta zgoda jest przechowywana dla każdej aplikacji i dla każdego modelu urządzenia. Użytkownik wyraża zgodę na zezwolenie aplikacji na dostęp do urządzenia w tle, tak jak wyraża zgodę na zezwolenie aplikacji na dostęp do urządzenia, gdy aplikacja znajduje się na pierwszym planie.
W poniższym przykładzie aplikacja o nazwie Tailspin Toys uzyskuje uprawnienia użytkownika do synchronizacji w tle.
Jeśli użytkownicy zmienią zdanie później, będą mogli odwołać uprawnienia w obszarze Ustawienia.
Zgoda użytkownika na aktualizację urządzenia
W przeciwieństwie do zadań w tle korzystających z funkcji DeviceUseTrigger, zadania w tle korzystające z funkcji DeviceServicingTrigger wymagają zgody użytkownika za każdym razem, gdy są wyzwalane. Ta zgoda nie jest przechowywana w taki sposób, jak w przypadku elementu DeviceUseTrigger. Dzieje się tak, ponieważ aktualizacje oprogramowania układowego urządzenia obejmują operacje o wyższym ryzyku i wymagają więcej czasu na ukończenie.
System Windows udostępnia również użytkownikom informacje o aktualizacjach urządzeń. Obejmuje to ostrzeżenia dotyczące utrzymania połączenia urządzenia przez cały czas trwania aktualizacji oraz upewnienie się, że komputer jest naładowany. System Windows pokazuje również przybliżony czas wykonywania operacji, jeśli aplikacja ją udostępnia.
Ograniczenia częstotliwości i pierwszego planu
Nie ma żadnych ograniczeń dotyczących częstotliwości, z jaką aplikacja może inicjować operacje, ale aplikacja może uruchamiać tylko jedno zadanie DeviceUseTrigger lub DeviceServicingTrigger w tle w danym momencie (nie ma to wpływu na inne typy zadań w tle) i może zainicjować zadanie w tle tylko wtedy, gdy aplikacja znajduje się na pierwszym planie. Jeśli aplikacja nie znajduje się na pierwszym planie, nie może zainicjować zadania w tle za pomocą funkcji DeviceUseTrigger lub DeviceServicingTrigger. Aplikacja nie może zainicjować drugiego zadania w tle urządzenia przed ukończeniem pierwszego zadania w tle.
Zasady zadań w tle urządzenia
System Windows wymusza zasady, gdy aplikacja używa zadania w tle urządzenia. Jeśli te zasady nie zostaną spełnione, zadanie w tle przy użyciu elementu DeviceUseTrigger lub DeviceServicingTrigger może zostać anulowane. Podczas korzystania z zadań w tle urządzenia do interakcji z urządzeniem peryferyjnym należy wziąć pod uwagę te wymagania dotyczące zasad.
Zasady inicjowania zadań
Ta tabela wskazuje, które zasady inicjowania zadań mają zastosowanie do każdego wyzwalacza zadania w tle.
| Policy | DeviceServicingTrigger | DeviceUseTrigger |
|---|---|---|
| Aplikacja platformy UWP znajduje się na pierwszym planie podczas wyzwalania zadania w tle. |
|
Zasady ![]() |
| Urządzenie jest podłączone do systemu (lub znajduje się w zasięgu dla urządzenia bezprzewodowego). |
|
Zasady ![]() |
| Zadanie w tle zużywa 400 ms czasu procesora (przy założeniu, że procesor 1GHz) co minutę, gdy ekran jest zablokowany lub co 5 minut, gdy ekran nie jest zablokowany. Niepowodzenie spełnienia tych zasad może spowodować anulowanie zadania. |
|
Zasady ![]() |
| Urządzenie jest dostępne dla aplikacji przy użyciu interfejsów API peryferyjnych urządzenia (interfejsy API środowiska uruchomieniowego systemu Windows dla USB, HID, Bluetooth itd.). Jeśli aplikacja nie może uzyskać dostępu do urządzenia, dostęp do zadań w tle zostanie odrzucony. |
|
Zasady ![]() |
| Punkt wejścia zadania w tle udostępniany przez aplikację jest zarejestrowany w manifeście pakietu aplikacji. |
|
Zasady ![]() |
| Użytkownik udzielił uprawnień zadaniu do kontynuowania. | Za każdym razem. | Najpierw, a następnie kontrolowany przez uprawnienia aplikacji. |
| Szacowanie czasu dostarczone przez aplikację wynosi mniej niż 30 minut. |
|
|
| Aplikacja jest określana jako aplikacja uprzywilejowana dla urządzenia. (Musi istnieć pełne dopasowanie identyfikatora aplikacji względem listy aplikacji uprzywilejowanych w metadanych kontenera urządzenia.) |
|
|
| Komputer ma więcej niż 33% pojemność baterii pozostałej lub jest zasilana prądem ac. |
|
|
| Na typ operacji jest uruchomione tylko jedno zadanie w tle urządzenia. |
|
Zasady ![]() |
Testy zasad środowiska uruchomieniowego
System Windows wymusza następujące wymagania dotyczące zasad środowiska uruchomieniowego, gdy zadanie jest uruchomione w tle. Jeśli którekolwiek z wymagań środowiska uruchomieniowego przestanie być spełnione, system Windows anuluje zadanie w tle urządzenia.
Ta tabela wskazuje, które zasady środowiska uruchomieniowego mają zastosowanie do każdego wyzwalacza zadania w tle.
| Sprawdzanie zasad | DeviceServicingTrigger | DeviceUseTrigger |
|---|---|---|
| Limit czasu zegara ściany — łączna ilość czasu, przez który zadanie aplikacji może działać w tle. | 30 minut | 10 minut |
| Urządzenie jest podłączone do systemu (lub znajduje się w zasięgu dla urządzenia bezprzewodowego). |
|
Kontrola zasad ![]() |
| Zadanie wykonuje regularne operacje we/wy na urządzeniu (1 operacje we/wy co 5 sekund). |
|
Kontrola zasad ![]() |
| Aplikacja nie anulowała zadania. |
|
Kontrola zasad ![]() |
| Aplikacja nie zamknęła się. |
|
Kontrola zasad ![]() |
Najlepsze rozwiązania
Poniżej przedstawiono najlepsze rozwiązania dotyczące aplikacji urządzeń platformy UWP korzystających z zadań w tle urządzenia.
Model programowania zadań w tle urządzenia
Używanie zadań w tle, takich jak DeviceUseTrigger lub DeviceServicingTrigger, z aplikacji gwarantuje, że wszystkie operacje synchronizacji lub aktualizacji urządzeń rozpoczęte przez aplikację pierwszego planu będą kontynuowane w tle, jeśli użytkownik przełączy się na inne aplikacje, a aplikacja pierwszego planu zostanie zawieszona przez system Windows. Zalecamy stosowanie tego ogólnego modelu do rejestrowania, wyzwalania i wyrejestrowania zadań w tle:
Zarejestruj zadanie w tle przed żądaniem wyzwalacza.
Połącz programy obsługi zdarzeń postępu i ukończenia z wyzwalaczem. Po powrocie aplikacji z zawieszenia system Windows udostępnia jej dowolne zdarzenia postępów lub ukończenia w kolejce, których można użyć do określenia stanu zadań w tle.
Zamknij wszystkie otwarte obiekty urządzeń po wyzwoleniu zadań w tle DeviceUseTrigger lub DeviceServicingTrigger, aby te urządzenia mogły być otwarte i używane przez zadanie w tle.
Zarejestruj wyzwalacz.
Po zakończeniu zadania wyrejestruj proces uruchomiony w tle. Po zakończeniu zadania w tle możesz anulować zadania w tle i ponownie otworzyć urządzenie, a następnie regularnie używać go z poziomu aplikacji UWP.
Zarejestruj się w celu anulowania zdarzeń z klasy zadań w tle. Rejestrowanie w celu anulowania zdarzeń umożliwia kodowi zadania w tle czyste zatrzymanie uruchomionego zadania w tle po anulowaniu przez system Windows lub aplikację pierwszego planu.
Po zakończeniu aplikacji (bez zawieszenia) wyrejestruj i anuluj wszystkie uruchomione zadania.
Po zakończeniu działania aplikacji wyrejestruj i anuluj wszystkie uruchomione zadania.
Po zakończeniu działania aplikacji zadania w tle zostaną anulowane, a wszystkie istniejące programy obsługi zdarzeń zostaną odłączone od istniejących zadań w tle. Uniemożliwia to określenie stanu zadań w tle. Wyrejestrowanie i anulowanie zadań w tle umożliwi kodowi anulowania ich czyste zatrzymanie.
Wskazówka
Aby uzyskać szczegółowy opis sposobu wykonania tej czynności za pomocą przykładowego niestandardowego urządzenia USB, zobacz Tworzenie zadania w tle urządzenia.
Anulowanie zadania w tle
Aby anulować zadanie uruchomione w tle z poziomu aplikacji pierwszego planu, użyj metody Wyrejestrowanie na obiekcie BackgroundTaskRegistration, którego używasz w aplikacji do rejestrowania zadania w tle DeviceUseTrigger lub DeviceServicingTrigger. Wyrejestrowywanie zadania w tle za pomocą metody Unregister w funkcji BackgroundTaskRegistration powoduje anulowanie tego zadania przez infrastrukturę zadań.
Metoda Wyrejestrować dodatkowo przyjmuje wartość typu logicznego true lub false, aby wskazać, czy aktualnie działające instancje zadania w tle powinny zostać anulowane bez pozwolenia na ich zakończenie. Aby uzyskać więcej informacji, zobacz dokumentację interfejsu API dla elementu BackgroundTaskRegistration.Unregister.