Unbegrenzte Ausführung im Hintergrund
Um benutzern eine optimale Benutzererfahrung zu bieten, erzwingt Windows Ressourcenbeschränkungen für Universelle Windows-Plattform(UWP)-Apps. Vordergrund-Apps erhalten die meiste Arbeitsspeicher- und Ausführungszeit; Hintergrund-Apps erhalten weniger. Benutzer sind daher vor schlechter Leistung der Vordergrund-App und einem hohen Akkuverlust geschützt.
Entwickler, die UWP-Apps für den persönlichen Gebrauch schreiben (d. h. quergeladene Apps, die nicht im Microsoft Store veröffentlicht werden) oder Entwickler, die UWP-Apps für Unternehmen schreiben, möchten möglicherweise alle Ressourcen verwenden, die auf dem Gerät verfügbar sind, ohne dass Hintergrund- oder erweiterte Ausführungseinschränkung erforderlich ist. Branchen- und persönliche UWP-Anwendungen können APIs im Windows Creators Update (Version 1703) verwenden, um die Drosselung zu deaktivieren. Beachten Sie, dass Sie eine App nicht im Microsoft Store platzieren können, wenn sie diese APIs verwendet.
Ausführen während minimierter Ausführung
UWP-Apps werden in einen angehaltenen Zustand verschoben, wenn sie nicht im Vordergrund ausgeführt werden. Auf dem Desktop tritt dies auf, wenn ein Benutzer die App minimiert. Apps verwenden eine erweiterte Ausführungssitzung, um die Ausführung fortzusetzen, während sie minimiert ist. Die erweiterten Ausführungs-APIs, die vom Microsoft Store akzeptiert werden, sind in "Anhalten der App mit erweiterter Ausführung" detailliert beschrieben.
Wenn Sie eine App entwickeln, die nicht an den Microsoft Store übermittelt werden soll, können Sie die ExtendedExecutionForegroundSession mit der extendedExecutionUnconstrained
eingeschränkten Funktion verwenden, damit Ihre App weiterhin ausgeführt werden kann, unabhängig vom Energiezustand des Geräts.
Die extendedExecutionUnconstrained
Funktion wird als eingeschränkte Funktion im App-Manifest hinzugefügt. Weitere Informationen zu eingeschränkten Funktionen finden Sie unter App-Funktionsdeklarationen .
Hinweis
Fügen Sie die XML-Namespacedeklaration "xmlns:rescap " hinzu, und deklarieren Sie die Funktion mithilfe des Rescap-Präfixes .
Weitere Informationen finden Sie im Abschnitt "Eingeschränkte Funktionen" von App-Funktionsdeklarationen.
Package.appxmanifest
<Package
...
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
IgnorableNamespaces="uap mp rescap">
...
<Capabilities>
<rescap:Capability Name="extendedExecutionUnconstrained"/>
</Capabilities>
</Package>
Wenn Sie die extendedExecutionUnconstrained
Funktion verwenden, werden ExtendedExecutionForegroundSession und ExtendedExecutionForegroundReason anstelle von ExtendedExecutionSession und ExtendedExecutionReason verwendet. Dasselbe Muster zum Erstellen der Sitzung, zum Festlegen von Mitgliedern und zum Anfordern der Erweiterung gilt weiterhin:
var newSession = new ExtendedExecutionForegroundSession();
newSession.Reason = ExtendedExecutionForegroundReason.Unconstrained;
newSession.Description = "Long Running Processing";
newSession.Revoked += SessionRevoked;
ExtendedExecutionForegroundResult result = await newSession.RequestExtensionAsync();
switch (result)
{
case ExtendedExecutionForegroundResult.Allowed:
DoLongRunningWork();
break;
default:
case ExtendedExecutionForegroundResult.Denied:
DoShortRunningWork();
break;
}
Sie können diese erweiterte Ausführungssitzung anfordern, sobald die App in den Vordergrund kommt. Nicht eingeschränkte erweiterte Ausführungssitzungen sind nicht durch Energiekontingente oder durch den Stromsparmodus des Betriebssystems beschränkt. Solange ein Verweis auf das Sitzungsobjekt vorhanden ist, bleibt die App im zustandsbereit und wechselt nicht in den angehaltenen Zustand. Wenn die App vom Benutzer geschlossen wird, wird die Sitzung widerrufen.
Durch die Registrierung für das Ereignis "Revoked " kann Ihre App alle erforderlichen Bereinigungsarbeiten ausführen. Im Anhaltezustand können Sie eine erweiterte Ausführungssitzung mit ExtendedExecutionReason.SavingData erstellen, um Benutzerdaten zu speichern, bevor die App beendet und aus dem Arbeitsspeicher entfernt wird.
Ausführen von Hintergrundaufgaben auf unbestimmte Zeit
In der Universelle Windows-Plattform sind Hintergrundaufgaben Prozesse, die ohne Benutzeroberfläche im Hintergrund ausgeführt werden. Hintergrundaufgaben können in der Regel für maximal fünfundzwanzig Sekunden ausgeführt werden, bevor sie abgebrochen werden. Einige der länger ausgeführten Aufgaben verfügen auch über eine Überprüfung, um sicherzustellen, dass die Hintergrundaufgabe nicht im Leerlauf sitzt oder Arbeitsspeicher verwendet. Im Windows Creators Update (Version 1703) wurde die eingeschränkte extendedBackgroundTaskTime-Funktion eingeführt, um diese Grenzwerte zu entfernen. Die extendedBackgroundTaskTime-Funktion wird als eingeschränkte Funktion in der Manifestdatei Ihrer App hinzugefügt:
Hinweis
Fügen Sie die XML-Namespacedeklaration "xmlns:rescap " hinzu, und deklarieren Sie die Funktion mithilfe des Rescap-Präfixes .
Weitere Informationen finden Sie im Abschnitt "Eingeschränkte Funktionen" von App-Funktionsdeklarationen.
Package.appxmanifest
<Package
...
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
IgnorableNamespaces="uap mp rescap">
...
<Capabilities>
<rescap:Capability Name="extendedBackgroundTaskTime"/>
</Capabilities>
</Package>
Diese Funktion entfernt Die Ausführungszeitbeschränkungen und den Watchdog der Leerlaufaufgabe. Nachdem eine Hintergrundaufgabe gestartet wurde, ob durch einen Trigger oder einen App-Dienstaufruf, kann sie unbegrenzt ausgeführt werden, sobald sie eine Verzögerung für die von der Run-Methode bereitgestellte BackgroundTaskInstance benötigt. Wenn die App auf "Von Windows verwaltet" festgelegt ist, wird möglicherweise weiterhin ein Energiekontingent darauf angewendet, und die Hintergrundaufgaben werden nicht aktiviert, wenn der Stromsparmodus aktiv ist. Dies kann mit Betriebssystemeinstellungen geändert werden. Weitere Informationen finden Sie in der Optimierung der Hintergrundaktivität.
Die Universelle Windows-Plattform überwacht die Ausführung von Hintergrundaufgaben, um eine gute Akkulaufzeit und eine reibungslose App-Erfahrung im Vordergrund sicherzustellen. Persönliche Apps und Enterprise-Branchen-Apps können jedoch die erweiterte Ausführung und die extendedBackgroundTaskTime-Funktion verwenden, um Apps zu erstellen, die je nach Bedarf ausgeführt werden, unabhängig von der Ressourcenverfügbarkeit des Geräts.
Beachten Sie, dass die erweiterten Funktionen "extendedExecutionUnconstrained " und "extendedBackgroundTaskTime " die Standardrichtlinie für UWP-Apps außer Kraft setzen können und zu einem erheblichen Akkuabfluss führen können. Bevor Sie diese Funktionen verwenden, vergewissern Sie sich zunächst, dass die standardmäßigen Richtlinien für erweiterte Ausführung und Hintergrundaufgaben ihre Anforderungen nicht erfüllen und Tests unter eingeschränkten Bedingungen durchführen, um die Auswirkungen ihrer App auf ein Gerät zu verstehen.