C# Windows Phone 8.1中时间触发后从后台任务唤醒/启动MainApp
下面是我的场景:我在同一个解决方案中有一个Windows Phone 8.1应用程序(MainApp)、一个类库和一个Windows运行时组件(C# Windows Phone 8.1中时间触发后从后台任务唤醒/启动MainApp,c#,windows-phone-8.1,win-universal-app,background-task,C#,Windows Phone 8.1,Win Universal App,Background Task,下面是我的场景:我在同一个解决方案中有一个Windows Phone 8.1应用程序(MainApp)、一个类库和一个Windows运行时组件(BackgroundTask) 当我加载我的应用程序时,我注册了一个TimeTriggerBackgroundTask,然后操作系统会处理这个问题。任务有两个事件,Run方法(在任务本身内部)和任务完成后在类库中收到的TaskCompleted回调。当应用程序位于前台或后台时,将执行这两个事件。 当应用程序关闭时,BackgroundTask仍然在那里,
BackgroundTask
)
当我加载我的应用程序时,我注册了一个TimeTrigger
BackgroundTask
,然后操作系统会处理这个问题。任务有两个事件,Run
方法(在任务本身内部)和任务完成后在类库中收到的TaskCompleted
回调。当应用程序位于前台或后台时,将执行这两个事件。当应用程序关闭时,
BackgroundTask
仍然在那里,因为是操作系统处理它,它总是在那里。问题是,当执行任务的Run
方法时,我希望在类库中执行方法,但由于我没有应用程序的实例,因此我无法执行此操作。那么,当应用程序关闭时,如何从我的
BackgroundTask
执行我的类库或MainApp中的代码?我是否可以从我的BackgroundTask
将应用程序唤醒/启动到后台或前台?否。无法以编程方式打开主应用程序。这听起来似乎对你的情况没有意义,但你可以显示一个通知,要求用户打开应用程序
否则,最好设置一个标记,表明需要处理,然后在用户下次运行主应用时检查是否需要处理。否。无法通过编程方式打开主应用。这听起来似乎对你的情况没有意义,但你可以显示一个通知,要求用户打开应用程序
否则,最好设置一个需要处理的标志,然后在用户下次运行主应用程序时检查该标志。操作系统不允许您从后台任务打开应用程序,因为这样会违反用户的前台体验,因为您将在未经用户同意的情况下更改应用程序(这就是为什么像Rob Caplan这样的祝酒词更有意义)。我认为您提到的
TaskCompleted
处理程序允许您的UI(用户可以看到)对注册任务的最后一个已完成的后台任务实例作出反应(例如:显示应用程序处于前台时在bg任务中下载的更新的相册艺术)
要从您提到的类库中运行代码以响应已完成的任务,只需引用类库(winRT库(如便携库)必须支持引用)或者将代码移动到后台任务winRT库,并从IBackgroundTask.Run方法调用该代码,然后退出。操作系统不允许您从后台任务打开应用程序,因为这样会违反用户的前台体验,因为您将在未经用户同意的情况下更改应用程序(这就是为什么像Rob Caplan这样的祝酒词更有意义)。我认为您提到的
TaskCompleted
处理程序允许您的UI(用户可以看到)对注册任务的最后一个已完成的后台任务实例作出反应(例如:显示应用程序处于前台时在bg任务中下载的更新的相册艺术)
要从您提到的类库中运行代码以响应已完成的任务,只需引用类库(winRT库(如便携库)必须支持引用)或将代码移动到后台任务winRT库,并从IBackgroundTask.run方法调用该代码,然后退出