所以我遇到了一些奇怪的行为。
我是ViewModel的第一页。 ViewModel只包含一个ObservableCollection。 当我在第二页上导航时,一切似乎都很好。但是,当我暂停此页面上的应用程序时,应用程序崩溃了。长按后退按钮或Windows键。 奇怪的是,这只有在我没有调试时才会发生。当我调试时,一切工作都找不到。 Suspend-Resume完美无缺。
我可以在我的Lumia 920和仿真器上重现它。
我找到了造成这种行为的原因,但它实际上应该是一个原因。
当我离开时,我正在调用此方法
Frame.Navigate(typeof(SecondPage), FirstPageViewModel); //names are fictive
奇怪行为的原因是ObservableCollection。如果我只是传递一个字符串对象,那很好。如果我创建一个本地List并传递它,它会在Suspending上崩溃。
我在想,我无法传递List对象,但这没有任何意义。 为什么它不会在Debugger中发生。是否有可能在某处以某种方式耗尽内存?
答案 0 :(得分:3)
问题与调试模式无关,因为在调试the Suspending event is not raised时,所以你的应用程序运行正常。
为了更好地了解发生的情况,请手动调用暂停事件(请参阅上面链接中的答案)。然后,您将能够在调试模式下看到抛出异常(及其类型)的位置。
我不能说是什么导致问题(没有看到代码),但是你提供了一行可能很麻烦:
Frame.Navigate(typeof(SecondPage), FirstPageViewModel);
你在这里导航并传递一个对象,所以可能在某个地方你需要它。看一下,当你恢复你的应用程序时,页面会恢复,但你的对象通常不会。您必须使用一些 NavigationHelper 方法 - SaveState / LoadState 来保存/加载您传递的数据或自行处理。< / p>
答案 1 :(得分:1)
如果您正在使用内置SuspensionManager
课程,则只能通过&#34;简单&#34; types(string,char,numeric,GUID)作为Frame.Navigate()
的第二个参数。有关详细信息,请参阅documentation for Frame.Navigate
。