So wird’s gemacht: Festlegen von Bedingungen für die Ausführung einer Hintergrundaufgabe (HTML)
[ Dieser Artikel richtet sich an Windows 8.x- und Windows Phone 8.x-Entwickler, die Windows-Runtime-Apps schreiben. Wenn Sie für Windows 10 entwickeln, finden Sie weitere Informationen unter neueste Dokumentation]
Hier erfahren Sie, wie Sie Bedingungen für das Ausführen einer Hintergrundaufgabe festlegen. So wird diese nur ausgeführt, wenn dies angemessen ist. Einige Hintergrundaufgaben, die durch ein Ereignis ausgelöst werden, müssen zudem noch bestimmte Bedingungen erfüllen, damit sie erfolgreich ausgeführt werden können. Wenn Sie Ihre Hintergrundaufgabe registrieren, können Sie mit SystemConditionType eine oder mehrere Bedingungen angeben. Die Bedingung wird geprüft, nachdem der Auslöser aktiviert wurde. Die Hintergrundaufgabe wird in die Warteschlange eingereiht und erst ausgeführt, wenn alle erforderlichen Bedingungen erfüllt sind.
Wenn Sie Bedingungen für Hintergrundaufgaben festlegen, schonen Sie Akku und CPU-Laufzeit, da das unnötige Ausführen von Aufgaben verhindert wird. Wenn Ihre Hintergrundaufgabe z. B. nach einem Timer ausgeführt wird und eine Internetverbindung benötigt, fügen Sie die InternetAvailable-Bedingung zum TaskBuilder hinzu, bevor Sie die Aufgabe registrieren. So wird verhindert, dass die Aufgabe unnötig Systemressourcen nutzt und Akkustrom verbraucht, da die Aufgabe erst ausgeführt wird, wenn der Timer abgelaufen ist und das Internet verfügbar ist.
Wissenswertes
Technologien
Voraussetzungen
- Dieses Thema setzt voraus, dass Sie Ihrer App bereits eine Hintergrundaufgabe zugeordnet haben und dass Ihre App Code enthält, der ein BackgroundTaskBuilder-Objekt namens taskBuilder erstellt.
Anweisungen
Schritt 1: Erstellen eines SystemCondition-Objekts
Erstellen Sie vor dem Hinzufügen der Bedingung ein SystemCondition-Objekt, das die Bedingung darstellt, die zum Ausführen einer Hintergrundaufgabe erfüllt werden muss. Geben Sie im Konstruktor die zu erfüllende Bedingung an, indem Sie einen SystemConditionType-Enumerationswert angeben.
Der folgende Code erstellt ein SystemCondition-Objekt, das die Internetverfügbarkeit als Bedingung angibt:
var internetCondition = new Windows.ApplicationModel.Background.SystemCondition(Windows.ApplicationModel.Background.SystemConditionType.InternetAvailable);
Schritt 2: Hinzufügen des SystemCondition-Objekts zur Hintergrundaufgabe
Um die Bedingung hinzuzufügen, rufen Sie die AddCondition-Methode für das BackgroundTaskBuilder-Objekt auf, und übergeben Sie das SystemCondition-Objekt an die Methode.
Der folgende Code registriert die InternetAvailable-Bedingung für Hintergrundaufgaben beim TaskBuilder:
taskBuilder.AddCondition(internetCondition);
Schritt 3: Registrieren der Hintergrundaufgabe
Sie können Ihre Hintergrundaufgabe jetzt mit der Register-Methode registrieren. Die Hintergrundaufgabe wird erst gestartet, wenn die angegebene Bedingung erfüllt ist.
Der folgende Code registriert das resultierende BackgroundTaskRegistration-Objekt:
var task = taskBuilder.Register();
Hinweis
In Windows Phone Store-Apps müssen Sie RequestAccessAsync aufrufen, bevor Sie versuchen, Hintergrundaufgaben zu registrieren. Unter Windows ist dieser Aufruf nur für die Hintergrundaufgaben erforderlich, die nur ausgeführt werden können, wenn sich Ihre App auf dem Sperrbildschirm befindet. Auf dem Telefon müssen Sie diese Methode vor dem Registrieren einer Hintergrundaufgabe einmal aufrufen.
Um sicherzustellen, dass Ihre Windows Phone-App nach dem Freigeben eines Updates weiterhin ordnungsgemäß ausgeführt wird, rufen Sie RemoveAccess und RequestAccessAsync auf, wenn Ihre App nach dem Aktualisieren startet. Weitere Infos finden Sie unter Richtlinien für Hintergrundaufgaben (HTML).
Hinweis
Ab Windows 8.1 werden Parameter für die Registrierung von Hintergrundaufgaben zum Zeitpunkt der Registrierung überprüft. Bei ungültigen Registrierungsparametern wird ein Fehler zurückgegeben. Ihre App muss Szenarios, in denen die Registrierung von Hintergrundaufgaben fehlschlägt, problemlos verarbeiten können. Verwenden Sie beispielsweise eine Bedingungsanweisung, um die App auf Registrierungsfehler zu prüfen, und führen Sie die fehlgeschlagene Registrierung mit anderen Parameterwerten erneut durch.
Schritt 4: Einfügen mehrerer Bedingungen für die Hintergrundaufgabe
Um mehrere Bedingungen hinzuzufügen, ruft Ihre App die AddCondition-Methode mehrmals auf. Diese Aufrufe müssen stattfinden, bevor die Aufgabenregistrierung wirksam wird.
Hinweis Achten Sie darauf, einer Hintergrundaufgabe keine in Konflikt stehenden Bedingungen hinzuzufügen.
Der folgende Ausschnitt zeigt mehrere Bedingungen im Kontext der Erstellung und Registrierung einer Hintergrundaufgabe:
var hourlyTrigger = new Windows.ApplicationModel.Background.TimeTrigger(60, false);
var recurringTaskBuilder = new Windows.ApplicationModel.Background.BackgroundTaskBuilder();
recurringTaskBuilder.Name = "Hourly background task for YourApp";
recurringTaskBuilder.TaskEntryPoint = "js\\ExampleBackgroundTask.js";
recurringTaskBuilder.SetTrigger(hourlytrigger);
//
// Begin adding conditions.
//
var userCondition = new Windows.ApplicationModel.Background.SystemCondition(Windows.ApplicationModel.Background.SystemConditionType.UserPresent);
var internetCondition = new Windows.ApplicationModel.Background.SystemCondition(Windows.ApplicationModel.Background.SystemConditionType.InternetAvailable);
taskBuilder.AddCondition(userCondition);
taskBuilder.AddCondition(internetCondition);
//
// Done adding conditions. Now we register the background task.
//
var task = recurringTaskBuilder.Register();
Anmerkungen
Hinweis Suchen Sie sich richtigen Bedingungen für Ihre Hintergrundaufgabe aus, damit sie nur bei Bedarf ausgeführt wird und nicht dann, wenn es nicht funktioniert. Unter SystemConditionType finden Sie Beschreibungen der verschiedenen Bedingungen für Hintergrundaufgaben.
Verwandte Themen
Schnellstart: Erstellen und Registrieren einer Hintergrundaufgabe
So wird's gemacht: Registrieren einer Hintergrundaufgabe
So wird's gemacht: Reagieren auf Systemereignisse mit Hintergrundaufgaben
So wird's gemacht: Verwenden von Wartungsauslösern
So wird's gemacht: Deklarieren von Hintergrundaufgaben im Anwendungsmanifest