【问题标题】:UWP_Can not start app using StartupTask Class?UWP_无法使用 StartupTask 类启动应用程序?
【发布时间】:2018-09-06 22:26:59
【问题描述】:

我按照这篇文章在系统重启时启动我的 UWP 应用。

https://docs.microsoft.com/en-us/uwp/api/windows.applicationmodel.startuptask#uwp-app-startup-task-extension

更新
我也试过那篇文章,在那个示例中使用了源代码Configure your app to start at log-in
以下是现象:
- 当我在 UWP 应用程序主页上单击请求启用启动按钮时,它显示启动状态为已启用。
- 我检查了任务管理器,此应用已在启动列表中启用。
- 在我重新启动 PC 并登录后,此应用程序会立即启动并最小化到任务栏。
- 当我点击任务栏上的应用程序图标时,应用程序只显示启动画面。
- 我以这种方式离开应用程序几分钟,然后它突然关闭而没有任何通知。
我可以将我的应用程序注册到启动列表,但是在我登录后,我的应用程序并没有按照我的意图自动启动。它总是像下面的图片
有人有同样的问题吗?我真的需要一些帮助。谢谢。

【问题讨论】:

    标签: c# uwp windows-10 win-universal-app windows-10-universal


    【解决方案1】:

    如果您的应用卡在初始状态,这通常意味着您的代码没有调用 Window.Activate()。

    确保为 ActivationKind.StartupTask 实现 OnActivate(),如下所示:

    protected override void OnActivated(IActivatedEventArgs args)
    {
        Frame rootFrame = Window.Current.Content as Frame;
        if (rootFrame == null)
        {
            rootFrame = new Frame();
            Window.Current.Content = rootFrame;
        }
    
        string payload = string.Empty;
        if (args.Kind == ActivationKind.StartupTask)
        { 
            var startupArgs = args as StartupTaskActivatedEventArgs;
            payload = ActivationKind.StartupTask.ToString();
        }
    
        rootFrame.Navigate(typeof(MainPage), payload);
        Window.Current.Activate();
    }
    

    【讨论】:

    • 你说得对,我错过了。太傻了,我只看了源码。源代码也没有 OnActivate()。谢谢。
    【解决方案2】:

    来自official document,UWP App启动任务扩展为

    <Package xmlns:uap5="http://schemas.microsoft.com/appx/manifest/uap/windows10/5" ...>
    ...
    <Applications>
        <Application ...>
            ...
            <Extensions>
              <uap5:Extension Category="windows.startupTask">
                <uap5:StartupTask
                  TaskId="MyStartupId"
                  Enabled="false"
                  DisplayName="Test startup" />
              </uap5:Extension>
          </Extensions>
        </Application>
    </Applications>
    

    您可以直接复制到您应用的Package.appxmanifest。它在我身边有效。请注意,当您的应用在启动时启动时,它将在任务栏中最小化。

    如果使用Configure your app to start at log-in博客中的启动任务扩展,需要修改ExecutableEntryPoint属性等于Application的EntryPoint属性。注意,避免在Extension 中使用$targetnametoken$.exe 通配符。

    <Extensions>
      <uap5:Extension
        Category="windows.startupTask"
        Executable="StartUpTest.exe"
        EntryPoint="StartUpTest.App">
        <uap5:StartupTask
          TaskId="MyStartupId"
          Enabled="false"
          DisplayName="Test startup" />
      </uap5:Extension>
    </Extensions>
    

    【讨论】:

    • 我用图片更新了我的问题。我在blogs.windows.com/buildingapps/2017/08/01/… 中尝试了确切的源代码,但结果是一样的。我不知道为什么,因为一切似乎都是正确的。该应用程序已在启动列表中注册,当我登录应用程序启动并开始在任务栏中最小化时。请大家帮忙,谢谢
    • 我已经创建了相同的测试应用程序参考博客,它在我身边工作,你可以尝试将你的应用程序部署在另一台机器上以验证你的操作系统是否出现故障。
    • 我在 PC 和平板电脑上部署了该应用程序 Panasonic FZ-M1 Windows 10 Pro,版本 10.0.16299 N/A Build 16299,基于 x64。结果是一样的。你能分享你的吗。
    • 现在我明白了问题所在。我没有实现 OnActivate(),@Stefan Wick 在下面的评论中帮我解决了这个问题。我只看了文章中的示例代码,它也没有 OnActivate()。无论如何,非常感谢。
    猜你喜欢
    • 2019-04-19
    • 2018-02-01
    • 1970-01-01
    • 2018-07-14
    • 2015-12-10
    • 2015-02-02
    • 1970-01-01
    相关资源
    最近更新 更多