我正在開發一個使用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