我正在开发一个使用Microsoft乐队的UWP模板10(汉堡)应用程序,我认为我已经完成了很多工作,因为我已将所有服务绑定到乐队(通过类库项目),并在屏幕上完美更新值。 然后我开始测试应用程序的简历,并遇到了一个问题。 当我重新启动一个应用程序时,用户将被带回值页面,但值不再更新。 基本上与乐队的连接似乎仍然有效,但readchanged空洞不再有效。Template10在应用程序暂停后继续运行服务
所以我在MainPageViewModel的OnNavigatedFromAsync方法中添加了代码来停止所有的服务没有问题。 但后来我发现,当恢复OnNavigatedToAsync方法不会被解雇,所以我不能解决如何重新启动所有的服务。
我也尝试在app.xaml.cs中添加OnResuming和OnSuspendingAsync的覆盖,但是随后无法解决如何从MainPageViewModel调用方法。 有没有正确的方法来处理这样的事情使用Template10?
好吧有趣,我一直在使用简历选项是。正如你所说,使用生命周期中的简历事件不会调用OnNavigatedToAsync。然而,它仍然没有像预期的那样工作。如果我暂停应用程序,然后从开始菜单重新启动它,然后我可以捕获OnNavigated到异步并重新启动一切,然后我的值再次开始更新,很棒:)但是,如果我尝试并通过使用任务列表恢复(长期保留在后面箭头)事件仍然不会启动并且服务不再启动.. – BGTurner
啊,对不起,你是对的,它不会启动。不过,我认为当应用程序暂停时,您不应该停止您的服务。根据[开发人员指南到Windows 10](https://mva.microsoft.com/en-US/training-courses/a-developers-guide-to-windows-10-12618),应用程序生命周期,Windows将会为你做那个。在你回到应用程序后,你的代码应该恢复。所有异步调用在暂停之前开始将返回一个错误。有关详细信息,请参阅约12分钟的视频。 –
是的,我并不期望必须停止所有的服务,这就是我最终试图让所有事情一旦恢复运行的地方。对于乐队来说,没有任何异步呼叫是我不认为的。你启动一个异步命令来启动它们,例如'await _bandClient.SensorManager.RRInterval.StartReadingsAsync();'然后你只是听带子上升事件'_bandOperator.EventRRIntervalChanged + = _bandOperator_EventRRIntervalChanged;'在恢复这些事件之后,如果不再调用第一段代码,就不会再发生。 – BGTurner