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.
Lernen Sie, wie Sie den ApplicationTrigger nutzen, um aus Ihrer App heraus eine Hintergrundaufgabe zu aktivieren.
Ein Beispiel, wie man einen Anwendungstrigger erstellt, finden Sie in diesem Beispiel.
In diesem Thema wird davon ausgegangen, dass Sie über eine Hintergrundaufgabe verfügen, die Sie aus Ihrer Anwendung aktivieren möchten. Wenn Sie noch keine Hintergrundaufgabe haben, gibt es eine Beispiel-Hintergrundaufgabe bei BackgroundActivity.cs. Oder befolgen Sie die Schritte in Erstellen und Registrieren einer Out-of-Process-Hintergrundaufgabe, um eine zu erstellen.
Gründe für die Verwendung eines Anwendungstriggers
Verwenden Sie einen ApplicationTrigger-, um Code in einem separaten Prozess anstelle der Vordergrundanwendung auszuführen. Ein Anwendungsauslöser ist geeignet, wenn Ihre App Aufgaben hat, die im Hintergrund erledigt werden müssen – auch wenn der Benutzer die Vordergrund-App schließt. Wenn die Hintergrundarbeit beim Schließen der App angehalten werden soll oder an den Zustand des Vordergrundprozesses gebunden sein sollte, dann sollte stattdessen die Erweiterte Ausführung verwendet werden.
Erstellen eines Anwendungstriggers
Erstellen Sie einen neuen Anwendungs-Trigger . Sie können es wie im folgenden Codeausschnitt in einem Feld speichern. Dies ist aus Gründen der Einfachheit, sodass wir später keine neue Instanz erstellen müssen, wenn wir den Trigger signalisieren möchten. Sie können jedoch jede beliebige Instanz von ApplicationTrigger verwenden, um den Trigger zu signalisieren.
// _AppTrigger is an ApplicationTrigger field defined at a scope that will keep it alive
// as long as you need to trigger the background task.
// Or, you could create a new ApplicationTrigger instance and use that when you want to
// trigger the background task.
_AppTrigger = new ApplicationTrigger();
// _AppTrigger is an ApplicationTrigger field defined at a scope that will keep it alive
// as long as you need to trigger the background task.
// Or, you could create a new ApplicationTrigger instance and use that when you want to
// trigger the background task.
Windows::ApplicationModel::Background::ApplicationTrigger _AppTrigger;
// _AppTrigger is an ApplicationTrigger field defined at a scope that will keep it alive
// as long as you need to trigger the background task.
// Or, you could create a new ApplicationTrigger instance and use that when you want to
// trigger the background task.
ApplicationTrigger ^ _AppTrigger = ref new ApplicationTrigger();
(Optional) Hinzufügen einer Bedingung
Sie können eine Hintergrundaufgabenbedingung erstellen, um zu steuern, wann die Aufgabe ausgeführt wird. Eine Bedingung verhindert, dass die Hintergrundaufgabe ausgeführt wird, bis die Bedingung erfüllt ist. Weitere Informationen finden Sie unter Festlegen von Bedingungen zum Ausführen einer Hintergrundaufgabe.
In diesem Beispiel wird die Bedingung auf InternetAvailable festgelegt, sodass die Aufgabe nach dem Auslösen nur ausgeführt wird, wenn der Internetzugriff verfügbar ist. Eine Liste mit möglichen Bedingungen finden Sie unter SystemConditionType.
SystemCondition internetCondition = new SystemCondition(SystemConditionType.InternetAvailable);
Windows::ApplicationModel::Background::SystemCondition internetCondition{
Windows::ApplicationModel::Background::SystemConditionType::InternetAvailable };
SystemCondition ^ internetCondition = ref new SystemCondition(SystemConditionType::InternetAvailable)
Ausführlichere Informationen zu Bedingungen und Typen von Hintergrundtriggern finden Sie unter Unterstützung Ihrer App durch Hintergrundaufgaben.
Rufen Sie die Funktion RequestAccessAsync() auf
Rufen Sie vor der Registrierung der Hintergrundaufgabe ApplicationTrigger-RequestAccessAsync- auf, um die Ebene der Hintergrundaktivität zu bestimmen, die der Benutzer zulässt, da der Benutzer möglicherweise die Hintergrundaktivität für Ihre App deaktiviert hat. Weitere Informationen dazu, wie Benutzer die Einstellungen für Hintergrundaktivitäten steuern können, finden Sie unter Optimieren von Hintergrundaktivitäten.
var requestStatus = await Windows.ApplicationModel.Background.BackgroundExecutionManager.RequestAccessAsync();
if (requestStatus != BackgroundAccessStatus.AlwaysAllowed)
{
// Depending on the value of requestStatus, provide an appropriate response
// such as notifying the user which functionality won't work as expected
}
Hintergrundaufgabe registrieren
Registrieren Sie die Hintergrundaufgabe, indem Sie die Registrierungsfunktion für Hintergrundaufgaben aufrufen. Weitere Informationen zum Registrieren von Hintergrundaufgaben und zum Anzeigen der Definition der RegisterBackgroundTask() Methode im folgenden Beispielcode finden Sie unter Registrieren einer Hintergrundaufgabe.
Wenn Sie die Verwendung eines Anwendungstriggers in Erwägung ziehen, um die Lebensdauer des Vordergrundprozesses zu verlängern, sollten Sie stattdessen erweiterte Ausführung verwenden. Der Anwendungstrigger wurde entwickelt, um einen separat gehosteten Prozess zur Ausführung von Arbeiten zu erstellen. Der folgende Codeausschnitt registriert einen Out-of-Process-Hintergrundtrigger.
string entryPoint = "Tasks.ExampleBackgroundTaskClass";
string taskName = "Example application trigger";
BackgroundTaskRegistration task = RegisterBackgroundTask(entryPoint, taskName, appTrigger, internetCondition);
std::wstring entryPoint{ L"Tasks.ExampleBackgroundTaskClass" };
std::wstring taskName{ L"Example application trigger" };
Windows::ApplicationModel::Background::BackgroundTaskRegistration task{
RegisterBackgroundTask(entryPoint, taskName, appTrigger, internetCondition) };
String ^ entryPoint = "Tasks.ExampleBackgroundTaskClass";
String ^ taskName = "Example application trigger";
BackgroundTaskRegistration ^ task = RegisterBackgroundTask(entryPoint, taskName, appTrigger, internetCondition);
Parameter für die Registrierung von Hintergrundaufgaben werden zum Zeitpunkt der Registrierung überprüft. Wenn einer der Registrierungsparameter ungültig ist, wird ein Fehler zurückgegeben. Stellen Sie sicher, dass Ihre App Szenarien, in denen die Registrierung von Hintergrundaufgaben fehlschlägt, ordnungsgemäß behandelt. Wenn ihre App stattdessen von einem gültigen Registrierungsobjekt abhängt, nachdem Sie versucht haben, eine Aufgabe zu registrieren, kann es abstürzen.
Auslösen der Hintergrundaufgabe
Bevor Sie die Hintergrundaufgabe auslösen, verwenden Sie BackgroundTaskRegistration-, um zu überprüfen, ob die Hintergrundaufgabe registriert ist. Ein guter Zeitpunkt, um zu verifizieren, dass alle deine Hintergrundaufgaben registriert sind, ist während des App-Starts.
Lösen Sie die Hintergrundaufgabe aus, indem Sie ApplicationTrigger.RequestAsync-aufrufen. Jede ApplicationTrigger--Instanz ist geeignet.
Beachten Sie, dass ApplicationTrigger.RequestAsync nicht von der Hintergrundaufgabe selbst aufgerufen werden kann, oder wenn sich die App im Hintergrundausführungszustand befindet (weitere Informationen zu Anwendungszuständen finden Sie unter App-Lebenszyklus). Es kann DisabledByPolicy zurückgeben, wenn der Benutzer Energie- oder Datenschutzrichtlinien festgelegt hat, die die Hintergrundaktivität der App verhindern. Außerdem kann jeweils nur ein AppTrigger ausgeführt werden. Wenn Sie versuchen, einen AppTrigger auszuführen, während bereits ein anderer ausgeführt wird, gibt die Funktion CurrentlyRunningzurück.
var result = await _AppTrigger.RequestAsync();
Verwalten Sie Ressourcen für Ihre Hintergrundaufgabe
Verwenden Sie BackgroundExecutionManager.RequestAccessAsync-, um festzustellen, ob der Benutzer entschieden hat, dass die Hintergrundaktivität Ihrer App eingeschränkt werden soll. Achten Sie auf den Akkuverbrauch und führen Sie Anwendungen nur im Hintergrund aus, wenn es notwendig ist, eine Aktion auszuführen, die der Benutzer wünscht. Weitere Informationen dazu, wie Benutzer die Einstellungen für Hintergrundaktivitäten steuern können, finden Sie unter Optimieren von Hintergrundaktivitäten.
- Speicher: Die Optimierung des Speichers und der Energienutzung Ihrer App ist entscheidend, um sicherzustellen, dass das Betriebssystem die Ausführung ihrer Hintergrundaufgabe ermöglicht. Verwenden Sie die Speicherverwaltungs-APIs, um zu sehen, wie viel Arbeitsspeicher Ihre Hintergrundaufgabe verwendet. Je mehr Arbeitsspeicher ihre Hintergrundaufgabe verwendet, desto schwieriger ist es für das Betriebssystem, die Ausführung beizubehalten, wenn sich eine andere App im Vordergrund befindet. Der Benutzer hat letztendlich die Kontrolle über alle Hintergrundaktivitäten, die Ihre App ausführen kann, und hat die Sichtbarkeit der Auswirkungen, die Ihre App auf die Akkunutzung hat.
- CPU-Zeit: Hintergrundaufgaben sind auf die Nutzungszeit der Wanduhr begrenzt, die sie basierend auf dem Triggertyp erhalten. Hintergrundaufgaben, die vom Anwendungstrigger ausgelöst werden, sind auf etwa 10 Minuten begrenzt.
Siehe Unterstützung Ihrer App durch Hintergrundaufgaben für die Resourcenbeschränkungen, die für Hintergrundaufgaben gelten.
Bemerkungen
Ab Windows 10 ist es nicht mehr erforderlich, dass der Benutzer Ihre App zum Sperrbildschirm hinzusetzt, um Hintergrundaufgaben zu nutzen.
Eine Hintergrundaufgabe wird nur dann mit einem ApplicationTrigger ausgeführt, wenn Sie zuerst RequestAccessAsync aufgerufen haben.
Zugehörige Themen
- Richtlinien für Hintergrundaufgaben
- Codebeispiel für eine Hintergrundaufgabe
- Erstellen und Registrieren einer prozessinternen Hintergrundaufgabe.
- Eine außerhalb des Prozesses liegende Hintergrundaufgabe erstellen und registrieren
- Debuggen einer Hintergrundaufgabe
- Deklarieren Sie Hintergrundaufgaben im Anwendungsmanifest
- Geben Sie Speicher frei, wenn Ihre App in den Hintergrund wechselt
- Behandlung einer stornierten Hintergrundaufgabe
- Wie man Unterbrechungs-, Wiederaufnahme- und Hintergrundereignisse in UWP-Apps auslöst (beim Debuggen)
- Überwachen des Status und des Abschlusses von Hintergrundaufgaben
- Aufschieben der App-Pausierung mithilfe erweiterter Ausführung
- Registriere eine Hintergrundaufgabe
- Auf Systemereignisse mit Hintergrundaufgaben reagieren
- Festlegen von Bedingungen zum Ausführen einer Hintergrundaufgabe
- Eine Live-Kachel aus einer Hintergrundaufgabe aktualisieren
- Einen Wartungstrigger verwenden