应用程序暂停时不会调用OnNavigatedFrom

时间:2014-11-21 06:37:35

标签: c# windows-runtime windows-phone-8.1

今天我遇到了一个奇怪的问题 - 似乎在我的设备上(v.8.10.14203.306) OnNavigatedFrom 事件在应用程序被暂停时没有被调用。据我记得,前段时间工作正常,而且非常as documentation stays

  

注意在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);
}

当存在正常导航(例如,通过后退按钮)时,事件被触发,但是在应用程序暂停时不再触发 - 在调试和释放模式下。我还检查了 Suspending 事件是否被触发,并且它是否被发现:

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

我错过了什么吗?

1 个答案:

答案 0 :(得分:4)

我唯一可以建议的是确保你从Application.Suspending处理程序中调用Frame.GetNavigationState(这通常由SuspensionManager.SaveAsync完成)。根据文件:

  

调用此方法会使用 NavigationMode.Forward 为当前页面调用 Page.OnNavigatedFrom GetNavigationState 通常在应用程序暂停时调用,因此当前页面将被导航离开。