1

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

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

那么,我怎样才能从我BackgroundTask的应用程序关闭时执行我的类库或 MainApp 中的代码?我可以从我的后台或前台唤醒/启动应用程序BackgroundTask吗?

4

2 回答 2

2

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

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

于 2014-09-29T15:39:37.383 回答
2

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

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

于 2014-09-30T13:22:28.663 回答