Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Von Bedeutung
Gerätemetadaten sind veraltet und werden in einer zukünftigen Version von Windows entfernt. Informationen zum Ersatz dieser Funktionalität finden Sie unter Treiberpaketcontainermetadaten.
Ihre UWP-App kann eine Hintergrundaufgabe für Geräte verwenden, um Daten auf Ihrem Peripheriegerät zu synchronisieren. Wenn Ihre App Gerätemetadaten zugeordnet ist, kann diese UWP-Geräte-App auch einen Gerätehintergrund-Agent verwenden, um Geräteupdates auszuführen, z. B. Firmwareupdates. Geräte-Hintergrunddienste unterliegen Richtlinien, die sicherstellen, dass der Benutzer eingewilligt hat und die Akkulaufzeit erhalten bleibt, während Geräte synchronisiert und aktualisiert werden.
Um Gerätesynchronisierungs- und Aktualisierungsvorgänge auszuführen, erstellen Sie eine Gerätehintergrundaufgabe, die den DeviceUseTrigger bzw. DeviceServicingTrigger verwendet. Informationen zum Erstellen einer Gerätehintergrundaufgabe mit dem Beispiel für ein benutzerdefiniertes USB-Gerät finden Sie unter Erstellen einer Hintergrundaufgabe für Geräte.
Windows-Runtime-Geräte-APIs erfordern keine Gerätemetadaten. Dies bedeutet, dass Ihre App keine UWP-Geräte-App sein muss, um sie zu verwenden. UWP-Apps können diese APIs für den Zugriff auf USB, Human Interface Devices (HID), Bluetooth-Geräte und vieles mehr verwenden. Weitere Informationen finden Sie unter Integrieren von Geräten.
Übersicht über die Geräte-Hintergrundaufgabe
Wenn Benutzer Ihre UWP-App außerhalb des Bildschirms verschieben, hält Windows Ihre App im Arbeitsspeicher an, sodass eine andere App den Vordergrund hat. Wenn eine App angehalten wird, bleibt sie im Arbeitsspeicher, aber Windows hat ihre Ausführung gestoppt.
Alle laufenden Gerätevorgänge wie Synchronisierung und Aktualisierung werden ohne Hilfe einer Gerätehintergrundaufgabe unterbrochen. Windows stellt zwei Hintergrundaufgabentrigger zur Lösung dieses Problems bereit: DeviceUseTrigger und DeviceServicingTrigger. Mit diesen Triggern kann Ihre App lange ausgeführte Synchronisierungs- und Aktualisierungsvorgänge auf Ihrem Peripheriegerät sicher im Hintergrund ausführen, auch wenn Ihre App angehalten ist. Weitere Informationen zum Anhalten der App finden Sie unter Starten, Fortsetzen und Multitasking.
| Trigger für Hintergrundaufgaben | Erfordert Gerätemetadaten | BESCHREIBUNG |
|---|---|---|
| DeviceUseTrigger | Nein | Ermöglicht lang andauernde Synchronisierungsvorgänge mit oder von Ihrem Peripheriegerät, während Ihre App ausgesetzt ist. Wenn Sie Ihr Gerät im Hintergrund synchronisieren, muss der Benutzer die Hintergrundsynchronisierung von Ihrer App genehmigen. Ihr Gerät muss auch mit dem PC verbunden oder gekoppelt sein, mit aktiver E/A und maximal 10 Minuten zulässiger Hintergrundaktivität. Weitere Details zur Richtlinienerzwingung finden Sie weiter unten in diesem Artikel. |
| DeviceServicingTrigger | Ja | Aktiviert lang andauernde Geräteupdates, z. B. Einstellungenübertragungen oder Firmwareupdates, während Ihre App angehalten wird. Damit Ihr Gerät im Hintergrund aktualisiert werden kann, ist jedes Mal die Zustimmung des Benutzers erforderlich, wenn die Hintergrundaufgabe eingesetzt wird. Im Gegensatz zur DeviceUseTrigger-Hintergrundaufgabe ermöglicht die DeviceServicingTrigger-Hintergrundaufgabe den Geräteneustart und die Trennung und ermöglicht maximal 30 Minuten Hintergrundaktivität. Weitere Details zur Richtlinienerzwingung finden Sie weiter unten in diesem Artikel. |
DeviceServicingTrigger erfordert Gerätemetadaten, da die App als privilegierte App angegeben werden muss, um Geräteaktualisierungsvorgänge auszuführen.
App-Berechtigungen
Eine privilegierte App kann einige wichtige Gerätevorgänge ausführen, z. B. lang andauernde Geräteupdates. Eine privilegierte App ist die App, die der Gerätehersteller zum Ausführen dieser Vorgänge autorisiert. Die Gerätemetadaten geben an, welche App (falls vorhanden) als privilegierte App für ein Gerät festgelegt wird.
Geben Sie beim Erstellen der Gerätemetadaten mit dem Gerätemetadaten-Assistenten Ihre App auf der Seite " UWP-Geräte-App-Informationen angeben " an. Weitere Informationen finden Sie in Schritt 2: Erstellen von Gerätemetadaten für Ihre UWP-Geräte-App.
Unterstützte Protokolle
Gerätehintergrundaufgaben, die DeviceUseTrigger und DeviceServicingTrigger verwenden, ermöglichen Ihrer App die Kommunikation mit Peripheriegeräten über bestimmte Protokolle. Die vom System ausgelösten Aufgaben, die in der Regel von UWP-Apps verwendet werden, unterstützen diese Protokolle nicht.
| Protokoll | DeviceServicingTrigger | DeviceUseTrigger | Systemauslöser |
|---|---|---|---|
| USB |
|
|
|
| VERHEIMLICHTE |
|
|
|
| Bluetooth RFCOMM |
|
|
|
| Bluetooth GATT |
|
|
|
| MTP (Medienübertragungsprotokoll) |
|
|
|
| Netzwerkverkabelt |
|
|
|
| Netzwerk Wi-Fi |
|
|
|
| IDeviceIOControl |
|
|
|
Registrieren von Hintergrundaufgaben im App-Paketmanifest
Ihre App führt Synchronisierungs- und Aktualisierungsvorgänge in Code aus, der als Teil einer Hintergrundaufgabe ausgeführt wird. Dieser Code ist in eine Windows-Runtime-Klasse eingebettet, die IBackgroundTask implementiert (oder auf einer dedizierten JavaScript-Seite für JavaScript-Apps). Um eine Hintergrundaufgabe für ein Gerät zu verwenden, muss es in der App-Manifestdatei einer Vordergrund-App deklariert werden, ähnlich wie bei systemausgelösten Hintergrundaufgaben.
In diesem Beispiel einer App-Paketmanifestdatei sind DeviceLibrary.SyncContent und DeviceLibrary.UpdateFirmware Einstiegspunkte aus der Vordergrund-App. DeviceLibrary.SyncContent ist der Einstiegspunkt für die Hintergrundaufgabe, die DeviceUseTrigger verwendet. DeviceLibrary.UpdateFirmware ist der Einstiegspunkt für die Hintergrundaufgabe, die deviceServicingTrigger verwendet.
<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>
Verwendung Ihres Geräts mit Hintergrundaufgaben des Geräts
Um Ihre App zu entwickeln, um die Hintergrundaufgaben "DeviceUseTrigger" und "DeviceServicingTrigger" zu nutzen, führen Sie diese grundlegenden Schritte aus. Weitere Informationen zu Hintergrundaufgaben finden Sie unter Unterstützen ihrer App mit Hintergrundaufgaben.
Ihre App registriert ihre Hintergrundaufgabe im App-Manifest und bettet den Hintergrundaufgabencode in eine Windows-Runtime-Klasse ein, die IBackgroundTask oder eine dedizierte JavaScript-Seite für JavaScript-Apps implementiert.
Wenn Ihre App gestartet wird, erstellt und konfiguriert sie ein Gerätetriggerobjekt des entsprechenden Typs, entweder DeviceUseTrigger oder DeviceServicingTrigger, und speichert die Triggerinstanz für die zukünftige Verwendung.
Ihre App prüft, ob die Hintergrundaufgabe zuvor registriert wurde, und registriert sie andernfalls gegen den Gerätetrigger. Ihre App darf keine Bedingungen für die aufgabe festlegen, die diesem Auslöser zugeordnet ist.
Wenn Ihre App die Hintergrundaufgabe auslösen muss, ruft sie die RequestAsync-Aktivierungsmethode für das Gerätetriggerobjekt auf.
Ihre Hintergrundaufgabe wird nicht wie andere Systemhintergrundaufgaben gedrosselt (es gibt kein CPU-Zeitkontingent), wird jedoch mit reduzierter Priorität ausgeführt, um die Reaktionsfähigkeit von Vordergrund-Apps aufrechtzuerhalten.
Basierend auf dem Triggertyp überprüft Windows, ob die erforderlichen Richtlinien erfüllt sind, einschließlich der Anforderung der Benutzerzustimmung für den Vorgang vor dem Starten der Hintergrundaufgabe.
Windows überwacht Systembedingungen und Aufgabenlaufzeit und bricht bei Bedarf die Aufgabe ab, wenn die erforderlichen Bedingungen nicht mehr erfüllt sind.
Wenn die Hintergrundaufgaben Fortschritt oder Abschluss berichtet, empfängt Ihre App diese Ereignisse über Fortschritts- und Abschlussereignisse für die registrierte Aufgabe.
Wichtige Punkte, die Sie bei der Verwendung der Hintergrundaufgaben des Geräts berücksichtigen sollten
Die Möglichkeit, Hintergrundaufgaben, die DeviceUseTrigger und DeviceServicingTrigger verwenden, programmgesteuert auszulösen, ist nur auf Hintergrundaufgaben des Geräts beschränkt.
Windows erzwingt bestimmte Richtlinien, um die Zustimmung des Benutzers beim Aktualisieren seiner Peripheriegeräte sicherzustellen. Weitere Richtlinien werden erzwungen, um die Akkulaufzeit des Benutzers beim Synchronisieren und Aktualisieren von Peripheriegeräten beizubehalten.
Windows kann Hintergrundaufgaben abbrechen, die DeviceUseTrigger und DeviceServicingTrigger verwenden, wenn bestimmte Richtlinienanforderungen nicht mehr erfüllt sind, einschließlich einer maximalen Hintergrundzeit (Wanduhrzeit). Es ist wichtig, diese Richtlinienanforderungen zu berücksichtigen, wenn Sie diese Hintergrundaufgaben für die Interaktion mit Ihrem Peripheriegerät verwenden.
Tipp
Um zu sehen, wie diese Hintergrundaufgaben funktionieren, laden Sie ein Beispiel herunter. Das Beispiel für ein benutzerdefiniertes USB-Gerät veranschaulicht eine Hintergrundaufgabe, die die Gerätesynchronisierung mit DeviceUseTrigger durchführt.
Zustimmung des Benutzers
Wenn Ihre App DeviceUseTrigger oder DeviceServicingTrigger verwendet, erzwingt Windows Richtlinien, um sicherzustellen, dass der Benutzer Ihrer App die Berechtigung zum Zugreifen auf sein Gerät im Hintergrund zum Synchronisieren und Aktualisieren von Inhalten erteilt. Richtlinien werden auch erzwungen, um die Akkulaufzeit des Benutzers beim Synchronisieren und Aktualisieren von Peripheriegeräten zu erhalten.
Zustimmung des Gerätesynchronisierungsbenutzers
Eine Hintergrundaufgabe, die DeviceUseTrigger verwendet, erfordert eine einmalige Benutzerzustimmung, mit der Ihre App im Hintergrund synchronisiert werden kann. Diese Zustimmung wird pro App und Gerätemodell gespeichert. Der Benutzer stimmt zu, der App den Zugriff auf das Gerät im Hintergrund zu ermöglichen, genau wie er zustimmt, damit die App auf das Gerät zugreifen kann, wenn sich die App im Vordergrund befindet.
Im folgenden Beispiel erhält eine App mit dem Namen Tailspin Toys die Benutzerberechtigung für die Synchronisierung im Hintergrund.
Wenn Benutzer ihre Meinung später ändern, können sie Berechtigungen in den Einstellungen widerrufen.
Benutzerzustimmung für Geräteaktualisierung
Im Gegensatz zu Hintergrundaufgaben, die DeviceUseTrigger verwenden, benötigen Hintergrundaufgaben, die den DeviceServicingTrigger verwenden, jedes Mal die Zustimmung des Benutzers, wenn die Hintergrundaufgabe ausgelöst wird. Diese Zustimmung wird nicht gespeichert, wie sie für DeviceUseTrigger gilt. Dies liegt daran, dass Gerätefirmwareupdates vorgänge mit höherem Risiko beinhalten und mehr Zeit benötigen, um den Vorgang abzuschließen.
Windows stellt Benutzern außerdem Informationen zu Geräteupdates zur Verfügung. Dies schließt Warnungen ein, um das Gerät während des gesamten Updates zu verbinden und sicherzustellen, dass der PC aufgeladen ist. Windows zeigt auch die ungefähre Laufzeit des Vorgangs an, wenn ihre App sie bereitstellt.
Einschränkungen für Frequenz und Vordergrund
Es gibt keine Einschränkung der Häufigkeit, mit der Ihre App Vorgänge initiieren kann, aber Ihre App kann jeweils nur einen DeviceUseTrigger- oder DeviceServicingTrigger-Hintergrundaufgabenvorgang ausführen (dies wirkt sich nicht auf andere Arten von Hintergrundaufgaben aus), und kann eine Hintergrundaufgabe nur initiieren, während sich Ihre App im Vordergrund befindet. Wenn sich Ihre App nicht im Vordergrund befindet, kann sie keine Hintergrundaufgabe mit DeviceUseTrigger oder DeviceServicingTrigger initiieren. Ihre App kann keine zweite Gerätehintergrundaufgabe initiieren, bevor die erste Hintergrundaufgabe abgeschlossen wurde.
Richtlinien für Hintergrundaufgaben von Geräten
Windows erzwingt Richtlinien, wenn Ihre App eine Hintergrundaufgabe für Geräte verwendet. Wenn diese Richtlinien nicht erfüllt sind, wird die Hintergrundaufgabe mit DeviceUseTrigger oder DeviceServicingTrigger möglicherweise abgebrochen. Es ist wichtig, diese Richtlinienanforderungen bei der Verwendung von Gerätehintergrundaufgaben für die Interaktion mit Ihrem Peripheriegerät zu berücksichtigen.
Richtlinien für die Aufgabeninitiierung
Diese Tabelle gibt an, welche Aufgabeninitiierungsrichtlinien für jeden Hintergrundaufgabentrigger gelten.
| Politik | DeviceServicingTrigger | DeviceUseTrigger |
|---|---|---|
| Ihre UWP-App befindet sich beim Auslösen der Hintergrundaufgabe im Vordergrund. |
|
|
| Ihr Gerät ist an das System angeschlossen (oder in Reichweite für ein drahtloses Gerät). |
|
|
| Ihre Hintergrundaufgabe verbraucht 400 ms CPU-Zeit (vorausgesetzt, eine CPU mit 1 GHz) jede Minute, wenn der Bildschirm gesperrt ist, oder alle 5 Minuten, wenn der Bildschirm nicht gesperrt ist. Wenn diese Richtlinie nicht erfüllt wird, kann dies zu einem Abbruch Ihrer Aufgabe führen. |
|
|
| Auf Ihr Gerät kann über die Peripherie-APIs des Geräts (die Windows-Runtime-APIs für USB, HID, Bluetooth usw.) für die App zugegriffen werden. Wenn Ihre App nicht auf das Gerät zugreifen kann, wird der Zugriff auf die Hintergrundaufgaben verweigert. |
|
|
| Der von der App bereitgestellte Einstiegspunkt für die Hintergrundaufgabe wird im App-Paketmanifest registriert. |
|
|
| Der Benutzer hat der Aufgabe die Berechtigung zum Fortsetzen erteilt. | Jedes Mal. | Zum ersten Mal, dann durch App-Berechtigungen gesteuert. |
| Die von der App bereitgestellte Zeitschätzung beträgt weniger als 30 Minuten. |
|
|
| Die App wird als privilegierte App für das Gerät angegeben. (Es muss eine exakte Übereinstimmung der App-ID mit der Liste der privilegierten Apps in den Gerätemetadaten des Gerätecontainers vorhanden sein.) |
|
|
| Der Computer verfügt über mehr als 33% verbleibende Akkukapazität oder ist im Netzbetrieb. |
|
|
| Pro Vorgangstyp wird nur eine Hintergrundaufgabe für Geräte ausgeführt. |
|
|
Laufzeit-Richtlinienprüfungen
Windows erzwingt die folgenden Laufzeitrichtlinienanforderungen, während Ihre Aufgabe im Hintergrund ausgeführt wird. Wenn eine der Ausführungsanforderungen nicht mehr zutrifft, bricht Windows die Hintergrundaufgabe des Geräts ab.
Diese Tabelle gibt an, welche Laufzeitrichtlinien für jeden Hintergrundaufgabentrigger gelten.
| Richtlinienüberprüfung | DeviceServicingTrigger | DeviceUseTrigger |
|---|---|---|
| Zeitlimit für die Wanduhr – die Gesamtdauer der Ausführung der App-Aufgabe im Hintergrund. | 30 Minuten | 10 Minuten |
| Ihr Gerät ist an das System angeschlossen (oder in Reichweite für ein drahtloses Gerät). |
|
|
| Die Aufgabe führt normale E/A-Vorgänge auf dem Gerät aus (1 E/A alle 5 Sekunden). |
|
|
| Die App hat den Task nicht abgebrochen. |
|
|
| Die App ist nicht beendet worden. |
|
|
Bewährte Methoden
Im Folgenden sind bewährte Methoden für UWP-Geräte-Apps aufgeführt, die die Hintergrundaufgaben des Geräts verwenden.
Programmiermodell für Gerätehintergrundaufgaben
Die Verwendung der Hintergrundaufgaben "DeviceUseTrigger" oder "DeviceServicingTrigger" aus Ihrer App stellt sicher, dass alle Synchronisierungs- oder Geräteaktualisierungsvorgänge, die von der Vordergrund-App gestartet wurden, weiterhin im Hintergrund ausgeführt werden, wenn Benutzer Apps wechseln und die Vordergrund-App von Windows angehalten wird. Es wird empfohlen, dieses allgemeine Modell zum Registrieren, Auslösen und Aufheben der Registrierung Ihrer Hintergrundaufgaben zu befolgen:
Registrieren Sie die Hintergrundaufgabe, bevor Sie den Trigger anfordern.
Verbinden Sie Fortschritts- und Abschlussereignishandler mit dem Trigger. Wenn Ihre App aus dem Aussetzen zurückkehrt, stellt Windows Ihrer App alle in der Warteschlange befindlichen Fortschritts- oder Abschlussereignisse bereit, die verwendet werden können, um den Status Ihrer Hintergrundaufgaben zu bestimmen.
Schließen Sie alle geöffneten Geräteobjekte, wenn Sie Ihre DeviceUseTrigger- oder DeviceServicingTrigger-Hintergrundaufgaben auslösen, damit diese Geräte frei geöffnet und von Ihrer Hintergrundaufgabe verwendet werden können.
Registrieren Sie den Auslöser.
Wenn eine Aufgabe abgeschlossen ist, heben Sie die Registrierung der Hintergrundaufgabe auf. Nach Abschluss der Hintergrundaufgabe können Sie die Registrierung der Hintergrundaufgaben aufheben und das Gerät erneut öffnen und es regelmäßig aus Ihrer UWP-App verwenden.
Registrieren Sie sich für Abmeldereignisse in Ihrer Hintergrundaufgabenklasse. Die Registrierung für Abbruchereignisse ermöglicht es Ihrem Hintergrundaufgabencode, die ausgeführte Hintergrundaufgabe sauber zu beenden, wenn sie von Windows oder der Vordergrund-App abgebrochen wird.
Heben Sie beim Beenden der App (nicht anhaltend) die Registrierung auf, und brechen Sie alle ausgeführten Aufgaben ab.
Wenn Ihre App beendet wird, heben Sie die Registrierung auf, und brechen Sie alle ausgeführten Aufgaben ab.
Wenn Ihre App beendet wird, werden die Hintergrundaufgaben abgebrochen, und alle vorhandenen Ereignishandler werden von Ihren vorhandenen Hintergrundaufgaben getrennt. Dadurch wird verhindert, dass Sie den Status Ihrer Hintergrundaufgaben bestimmen. Wenn Sie die Registrierung aufheben und die Hintergrundaufgabe abbrechen, kann Ihr Abbruchcode Ihre Hintergrundaufgaben sauber beenden.
Tipp
Ausführliche Beschreibungen dazu, wie dies mit dem Beispiel für ein benutzerdefiniertes USB-Gerät erfolgt, finden Sie unter Erstellen einer Hintergrundaufgabe für Geräte.
Abbrechen einer Hintergrundaufgabe
Verwenden Sie zum Abbrechen einer Im Hintergrund ausgeführten Aufgabe aus der Vordergrund-App die Unregister-Methode für das BackgroundTaskRegistration-Objekt, das Sie in Ihrer App verwenden, um die Hintergrundaufgabe "DeviceUseTrigger " oder "DeviceServicingTrigger " zu registrieren. Wenn Sie die Registrierung Ihrer Hintergrundaufgabe mithilfe der Unregister-Methode von BackgroundTaskRegistration aufheben, wird die Infrastruktur für Hintergrundaufgaben dazu führen, dass die Hintergrundaufgabe abgebrochen wird.
Die Unregister-Methode verwendet zusätzlich einen booleschen Wert von true oder false, um anzugeben, ob derzeit ausgeführte Instanzen der Hintergrundaufgabe abgebrochen werden sollen, ohne dass sie fertiggestellt werden können. Weitere Informationen finden Sie in der API-Referenz für BackgroundTaskRegistration.Unregister.