预启动是如何工作的?
How prelaunch works?
在寻找可以使我的应用程序启动得更快的功能时,我发现 Microsoft documentation 中的预启动功能可以帮助更快地打开应用程序。但是,即使我注册应用程序以启用预启动,OnLaunched
事件在 e.PrelaunchActivated
中仍会变得错误。
(我只能在调试模式下使用 VS 选项 'Debug UWP Prelaunch' 测试此功能)。
我需要微软证书才能使用吗?
OS 需要多长时间才能了解我的应用符合预启动条件?
这会影响我在活动中做假的事实吗?
就我而言,Windows 在 Visual Studio 部署应用程序时不使用 Prelaunch,但从应用商店安装它后它按预期工作。用户必须至少 运行 一个应用程序,下次您将在任务管理器中看到它。它能否工作取决于可用内存量,但我发现即使在具有 4Gb RAM 的设备上它也能工作。
我进行了测试,预启动工作正常。我将 post 我的代码在这里并解释预启动是如何工作的。希望能帮到你解决问题。
这是我使用的示例代码:
protected override void OnLaunched(LaunchActivatedEventArgs e)
{
bool canEnablePrelaunch = Windows.Foundation.Metadata.ApiInformation.IsMethodPresent("Windows.ApplicationModel.Core.CoreApplication", "EnablePrelaunch");
// ********
// some other code here
// *********
//check if it is prelaunched
if (e.PrelaunchActivated == false)
{
// On Windows 10 version 1607 or later, this code signals that this app wants to participate in prelaunch
if (canEnablePrelaunch)
{
TryEnablePrelaunch();
}
// ******
// normal code
// ******
}
else
{
//prelaunched
// do some logic that don't require UI thread.
if (rootFrame.Content == null)
{
// When the navigation stack isn't restored navigate to the first page,
// configuring the new page by passing required information as a navigation
// parameter
rootFrame.Navigate(typeof(MainPage), "PreLaunched");
}
// Ensure the current window is active
Window.Current.Activate();
}
}
如您所见,我添加了一个 else 语句来在应用程序预启动时完成工作。
在Visual Studio中通过Debug Universal Windows App Prelaunch
模式测试时,整个过程应该是这样的:
选择Debug Universal Windows App Prelaunch
模式,应用程序将预启动。
OnLaunched
事件将被触发,您将进入 else 语句,因为它是预启动的。
您可以在 OnLaunched
预发布活动中完成您的工作
然后应用程序将进入暂停状态。
现在,用户从“开始”菜单启动应用程序。
OnLaunched
事件会再次触发这次会显示e.PrelaunchActivated == false
因为是由用户启动,它不是预启动的。我怀疑这是您遇到的行为。
这就是预启动工作的整个过程。这里也提到了这一点:App launch.
在寻找可以使我的应用程序启动得更快的功能时,我发现 Microsoft documentation 中的预启动功能可以帮助更快地打开应用程序。但是,即使我注册应用程序以启用预启动,OnLaunched
事件在 e.PrelaunchActivated
中仍会变得错误。
(我只能在调试模式下使用 VS 选项 'Debug UWP Prelaunch' 测试此功能)。
我需要微软证书才能使用吗?
OS 需要多长时间才能了解我的应用符合预启动条件?
这会影响我在活动中做假的事实吗?
就我而言,Windows 在 Visual Studio 部署应用程序时不使用 Prelaunch,但从应用商店安装它后它按预期工作。用户必须至少 运行 一个应用程序,下次您将在任务管理器中看到它。它能否工作取决于可用内存量,但我发现即使在具有 4Gb RAM 的设备上它也能工作。
我进行了测试,预启动工作正常。我将 post 我的代码在这里并解释预启动是如何工作的。希望能帮到你解决问题。
这是我使用的示例代码:
protected override void OnLaunched(LaunchActivatedEventArgs e)
{
bool canEnablePrelaunch = Windows.Foundation.Metadata.ApiInformation.IsMethodPresent("Windows.ApplicationModel.Core.CoreApplication", "EnablePrelaunch");
// ********
// some other code here
// *********
//check if it is prelaunched
if (e.PrelaunchActivated == false)
{
// On Windows 10 version 1607 or later, this code signals that this app wants to participate in prelaunch
if (canEnablePrelaunch)
{
TryEnablePrelaunch();
}
// ******
// normal code
// ******
}
else
{
//prelaunched
// do some logic that don't require UI thread.
if (rootFrame.Content == null)
{
// When the navigation stack isn't restored navigate to the first page,
// configuring the new page by passing required information as a navigation
// parameter
rootFrame.Navigate(typeof(MainPage), "PreLaunched");
}
// Ensure the current window is active
Window.Current.Activate();
}
}
如您所见,我添加了一个 else 语句来在应用程序预启动时完成工作。
在Visual Studio中通过Debug Universal Windows App Prelaunch
模式测试时,整个过程应该是这样的:
选择
Debug Universal Windows App Prelaunch
模式,应用程序将预启动。OnLaunched
事件将被触发,您将进入 else 语句,因为它是预启动的。您可以在
OnLaunched
预发布活动中完成您的工作然后应用程序将进入暂停状态。
现在,用户从“开始”菜单启动应用程序。
OnLaunched
事件会再次触发这次会显示e.PrelaunchActivated == false
因为是由用户启动,它不是预启动的。我怀疑这是您遇到的行为。
这就是预启动工作的整个过程。这里也提到了这一点:App launch.