Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows phone 8 OnNavigatedTo在应用程序恢复时被调用两次_Windows Phone 8_Windows Phone_Mvvm Light - Fatal编程技术网

Windows phone 8 OnNavigatedTo在应用程序恢复时被调用两次

Windows phone 8 OnNavigatedTo在应用程序恢复时被调用两次,windows-phone-8,windows-phone,mvvm-light,Windows Phone 8,Windows Phone,Mvvm Light,我的WP8应用程序有问题。它使用MVVM light库创建ViewModel,还用于带有消息的页面导航 现在我的主页上的OnNavigatedTo方法有一些问题。如果我第一次启动应用程序,它会被调用一次。如果我用后退按钮关闭并重新打开它,它也只会被调用一次。MainPage ViewModel的构造函数也将只调用一次 如果我让应用程序在后台打开并使用开始或搜索按钮退出,OnNavigatedTo将被调用两次!构造函数将不再被调用 我现在的问题是,我正在OnNavigated中初始化与服务器的同步

我的WP8应用程序有问题。它使用MVVM light库创建ViewModel,还用于带有消息的页面导航

现在我的主页上的OnNavigatedTo方法有一些问题。如果我第一次启动应用程序,它会被调用一次。如果我用后退按钮关闭并重新打开它,它也只会被调用一次。MainPage ViewModel的构造函数也将只调用一次

如果我让应用程序在后台打开并使用开始或搜索按钮退出,OnNavigatedTo将被调用两次!构造函数将不再被调用

我现在的问题是,我正在OnNavigated中初始化与服务器的同步。这应该只执行一次,但现在由于OnNavigatedTo的双重调用,有时会调用两次。我对WP8应用程序模型的理解是,当我进入页面时,OnNavigatedTo只会被调用一次。我无法理解这种行为,这让我发疯


我没有使用FastAppResume,只是想恢复正常的行为。任何建议都将不胜感激!我已经检查了所有可能加载两次页面的呼叫,但这没有帮助。除了这个问题,我的应用程序的表现也应该如此。另外,我正在寻找一种解决方案来创建一个异步任务,该任务一次只能执行一个。

我以前遇到过这种情况,因为消息被多次注册


在不查看代码的情况下,修复此问题的最佳方法是将Messenger.Default.Register添加到ViewModel构造函数中,这样它只被调用一次

是否检查了每个回调上的调用堆栈,以查看触发双重回调的代码?作为一种常见的解决方法,您可以设置一个初始化的成员变量以避免双重工作。每次调用的NavigationMode值是多少?是的,我已经检查了调用堆栈,但它在访问我的onNavigatedTo之前只调用常规的Windows Phone代码,我的代码中没有任何内容。如果我启动一个新的调试会话并使用home按钮离开应用程序,然后从startscreen上的互动程序中输入它,我将获得以下导航模式:新建、第一次呼叫重置、第二次呼叫刷新。我的理解是onNavigatedTo应该只被调用一次?!奥伦:我已经试过这种老套的方法了。至少它只会调用代码一次,但有时我在NotRegisteres消息处理程序中遇到了一些其他问题。是的,这可能是个问题。我注册和注销Messenger,因为它们会被添加多次,或者在页面上对延迟的消息做出反应。但是我需要在MainPage.xaml.cs中注册其中一些,因为在ViewModel中注册它们会太晚:/I我需要这样做,例如,对于我通过消息实现的页面导航。但我会调查的,很高兴听到我不是唯一一个处理这个奇怪问题的人!可以在主页上注册,但请确保在页面的OnNavigatingFrom上注销。好的,很高兴听到这个消息。我在进入或离开页面时注册和注销Messenger。Messenger是否会与其他页面上注册的其他Messenger发生冲突?e、 用于页面导航?