2014-09-29 76 views
1

这里是我的情况:我有一个Windows Phone的应用程序8.1(MainApp),一个类库,并在同一个解决方案在Windows运行时组件(BackgroundTask)。

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

唤醒/启动MainApp从后台任务TimeTrigger后的Windows Phone 8.1

那么,如何从我的BackgroundTask应用程序关闭时,从我的类库或MainApp执行代码?我是否可以从我的BackgroundTask中唤醒/启动App到背景或前景?

回答

2

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

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

2

不可以编程方式打开主应用程序。这听起来不像是有意义的,你的情况,但你可以展现一个通知,要求用户打开应用程序。

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