Einige Metro-Apps (Universal-Apps) frieren bei verlorenem Fokus ein?

484
Peachy

Ich weiß nicht, ob es möglich ist, das Problem zu beheben, aber ich würde es gerne wissen. Ich habe festgestellt, dass einige der Universal-Apps (Candy Crush ist ein Beispiel) einfrieren, wenn sie den Fokus verlieren. Ich habe mich gefragt, ob es möglich ist, das zu ändern

Ich erinnere mich, dass die Instagram-App dies früher getan hat, und es war ziemlich frustrierend, da ich versuchte, einen Livestream zu sehen. Sie würde einfach aufhören zu spielen, wenn sie unscharf wurde.

2
Dies ist normalerweise eine Implementierung auf Softwareebene. Sogar eine herkömmliche Desktopanwendung kann dieses Verhalten je nach Programmierung zeigen. Wenn die Anwendungen einfrieren, während sie nicht fokussiert sind, können Sie nicht viel tun. Dies ist, wie sie programmiert wurden, um zu funktionieren. Ramhound vor 6 Jahren 0
ach unglücklich, ich habe noch nie eine normale Anwendung für diese Bar in einigen Spielen gesehen, also dachte ich, es sei ein Metro-spezifisches Problem Peachy vor 6 Jahren 0
Läufst du im Tablet-Modus? Hier werden die Apps angehalten, wenn Sie wie in Windows 8 (.1) wechseln. Apps müssen Hintergrundaufgaben unterstützen, damit sie weiterhin arbeiten können (z. B. Herunterladen, Abspielen von Audio). magicandre1981 vor 6 Jahren 1
Ja, ich denke, es ist nur für Tablets gedacht, die kein Multi Window unterstützen, daher das Einfrieren, wenn der Fokus verloren geht Peachy vor 6 Jahren 0
Der App-Lebenszyklus wird hier erläutert: https://docs.microsoft.com/en-us/windows/uwp/launch-resume/app-lifecycle magicandre1981 vor 6 Jahren 0

1 Antwort auf die Frage

1
magicandre1981

Die Store-Apps haben einen komplexeren Lebenszyklus als Win32-Anwendungen:

Vor Windows 8 hatten Apps einen einfachen Lebenszyklus. Win32- und .NET-Apps werden entweder ausgeführt oder werden nicht ausgeführt. Wenn ein Benutzer sie minimiert oder von ihnen abweicht, wird er weiter ausgeführt. Dies war in Ordnung, bis tragbare Geräte und Energieverwaltung immer wichtiger wurden.

Windows 8 führte ein neues Anwendungsmodell mit UWP-Apps ein. Auf hohem Niveau wurde ein neuer suspendierter Zustand hinzugefügt. Eine UWP-App wird kurz nach dem Minimieren durch den Benutzer unterbrochen oder wechselt zu einer anderen App. Dies bedeutet, dass die Threads der App gestoppt werden und die App im Speicher verbleibt, sofern das Betriebssystem keine Ressourcen zurückfordern muss. Wenn der Benutzer wieder zur App wechselt, kann er schnell wieder in einen laufenden Zustand versetzt werden. Standardmäßig werden Apps, die sich nicht im Vordergrund befinden, ausgesetzt, was zu Energieeinsparungen und mehr Ressourcen für die derzeit im Vordergrund verfügbare App führt.

Der Suspend-Status fügt neue Anforderungen für Sie als Entwickler hinzu, da das Betriebssystem eine Suspended App möglicherweise beenden möchte, um Ressourcen freizugeben. Die beendete App wird weiterhin in der Taskleiste angezeigt. Wenn der Benutzer darauf klickt, muss die App den Status wiederherstellen, in dem sie sich befand, bevor sie beendet wurde, da der Benutzer nicht weiß, dass das System die App geschlossen hat. Sie werden denken, dass es im Hintergrund gewartet hat, während sie andere Dinge getan haben, und erwarten, dass es sich in demselben Zustand befindet, in dem es sich befand, als sie es verlassen haben. In diesem Thema werden wir uns anschauen, wie wir das erreichen können.

enter image description here

Um die Arbeit fortzusetzen, müssen die Apps Hintergrundaufgaben unterstützen:

Es gibt verschiedene Möglichkeiten für Apps, die im Hintergrund ausgeführt werden müssen, z. B. Hintergrundaufgaben, erweiterte Ausführung und durch Aktivität gesponserte Ausführung (z. B. die Funktion BackgroundMediaEnabled, mit der eine App Medien weiterhin im Hintergrund abspielen kann). . Hintergrundübertragungen können auch dann fortgesetzt werden, wenn Ihre App angehalten oder sogar beendet wird.

Daher unterstützen die Apps, die Sie verwenden, dies nicht und werden wie erwartet gesperrt.

Im Windows SDK gibt es ein Tool zum Deaktivieren des Lebenszyklus einer App

"C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\plmdebug.exe" /enableDebug <PackageFullName> 

Tun Sie dies für die Apps, die Sie fortsetzen möchten.

sehr informativ, vielen Dank: D Peachy vor 6 Jahren 0