【问题标题】:Wake up/Start MainApp from Background Task after TimeTrigger in Windows Phone 8.1在 Windows Phone 8.1 中的时间触发后从后台任务唤醒/启动主应用程序
【发布时间】:2014-09-29 15:17:34
【问题描述】:

这是我的场景:我在同一个解决方案中有一个 Windows Phone 8.1 应用程序 (MainApp)、一个类库和一个 Windows 运行时组件 (BackgroundTask)。

当我加载我的应用程序时,我注册了一个TimeTriggerBackgroundTask,然后操作系统会处理这个。任务有两个事件,Run 方法(在任务本身内部)和任务完成后我在类库中收到的TaskCompleted 回调。当应用程序处于前台或后台时,这两个事件都会执行。
当应用程序关闭时,BackgroundTask 仍然存在,因为它是处理它的操作系统,它始终存在。问题是,当 Task 的 Run 方法被执行时,我想在我的类库中执行方法,但由于我没有我的应用程序实例,所以我不能这样做。

那么,当应用程序关闭时,我如何从我的BackgroundTask 执行我的类库或 MainApp 中的代码?我可以通过BackgroundTask 将应用程序唤醒/启动到后台或前台吗?

【问题讨论】:

    标签: c# windows-phone-8.1 win-universal-app background-task


    【解决方案1】:

    操作系统不允许您从后台任务打开您的应用,因为这会违反用户的前台体验,因为您会在未经用户同意的情况下更改它(这就是为什么像 Rob Caplan 提到的祝酒词更有意义的原因) .您提到的TaskCompleted 处理程序在我看来是为了让您允许您的用户界面(用户可以看到)对注册任务的最后完成的后台任务实例做出反应(例如:显示更新的专辑封面在您的应用程序处于前台时在您的 bg 任务中下载)。

    要从您提到的类库中运行代码以响应已完成的任务,只需引用类库(必须支持可移植库等 winRT 库引用)或将代码移动到后台任务 winRT 库并在退出之前从 IBackgroundTask.Run 方法调用该代码。

    【讨论】:

      【解决方案2】:

      没有。无法以编程方式打开主应用程序。这听起来对您的情况没有意义,但您可以显示一条通知以要求用户打开应用程序。

      否则最好的办法是设置一个需要处理的标志,然后在用户下次运行主应用程序时检查。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多