某些 Metro(通用)应用程序因失去焦点而冻结?

某些 Metro(通用)应用程序因失去焦点而冻结?

我不知道是否可以解决这个问题,但我很想知道;我发现一些通用应用程序(例如 Candy Crush)在失去焦点时会冻结。我想知道是否有可能改变这种情况

我记得 Instagram 应用程序以前也出现过这种情况,这让我很沮丧,因为当时我试图观看直播,但当它失去焦点时就会停止播放。

答案1

商店应用程序的生命周期更为复杂比 Win32 应用程序:

在 Windows 8 之前,应用程序的生命周期很简单。Win32 和 .NET 应用要么正在运行,要么未运行。当用户最小化它们或切换离开时,它们会继续运行。在便携式设备和电源管理变得越来越重要之前,这种情况一直很好。

Windows 8 通过 UWP 应用引入了新的应用程序模型。从高层次上讲,添加了新的暂停状态。用户将 UWP 应用最小化或切换到其他应用后,该应用会立即暂停。这意味着应用的线程会停止,并且应用会保留在内存中,除非操作系统需要回收资源。当用户切换回应用时,应用可以快速恢复到运行状态。 默认情况下,不在前台的应用程序将被暂停,从而节省电量并为当前处于前台的应用程序提供更多资源。

挂起状态为开发人员增加了新的要求,因为操作系统可能会选择终止挂起的应用以释放资源。终止的应用仍将显示在任务栏中。当用户单击它时,应用必须恢复到终止前的状态,因为用户不会意识到系统已关闭该应用。他们会认为应用在他们做其他事情时一直在后台等待,并期望应用处于他们离开时的状态。在本主题中,我们将介绍如何实现这一点。

在此处输入图片描述

要继续工作,应用程序必须支持后台任务:

对于需要在后台继续运行的应用程序,有多种方法,例如后台任务、扩展执行和活动赞助执行(例如,BackgroundMediaEnabled 功能允许应用在后台继续播放媒体)。此外,即使您的应用程序被暂停甚至终止,后台传输操作仍可继续。

因此,您使用的应用程序不支持此功能并会按预期被暂停。

在 Windows SDK 中,有一个禁用应用程序生命周期的工具

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

对您想要继续运行的应用程序执行此操作。

相关内容