2014-11-21 36 views
2

今天我遇到了一個奇怪的問題 - 似乎是在我的設備上(v。8.10.14203.306)OnNavigated從當應用程序被暫停時,事件沒有被調用。至於我記得前一段時間,它正在確定,exacly as documentation stays當應用程序暫停時,不會調用OnNavigatedFrom

注意在Windows Phone上,OnNavigatedFrom()當應用程序暫停時調用。當應用程序恢復時,不會調用OnNavigatedTo()。

我試過一個簡單的例子(available at GitHub):

protected override void OnNavigatedFrom(NavigationEventArgs e) 
{ 
    this.navigationHelper.OnNavigatedFrom(e); 
    Debug.WriteLine("Navigation"); 
    this.Background = new SolidColorBrush(Colors.Red); 
} 

時有正常的導航(例如,通過後退按鈕),在事件被觸發,但沒有更多的,當應用程序被暫停 - 兩在調試和發佈模式。我也查了,如果暫停事件被觸發,它地調出來,它是:

// uncomment this to check if app is being suspended 
App.Current.Suspending += (sender, e) => this.Background = new SolidColorBrush(Colors.Blue); 

我缺少的東西?

回答

4

我唯一可以建議的是確保您在Application.Suspending處理程序中調用Frame.GetNavigationState(這通常由SuspensionManager.SaveAsync完成)。根據文檔:

調用此方法將調用Page.OnNavigatedFrom使用NavigationMode.Forward當前頁面。 GetNavigationState通常在應用程序被掛起時調用,因此當前頁面被導航離開。

+0

這是正確的。我認爲* OnNavigatedFrom *是自動調用的,而不是* SuspensionManager *(在這種情況下)。所以似乎可能有一個應用程序在被暫停時* OnNavigatedFrom *將不會被調用 - 很高興知道。謝謝。 – Romasz 2014-11-21 08:58:39

相關問題