2014-08-27 178 views
2

所以我遇到了一些奇怪的行爲。掛起時應用程序崩潰

我是帶有ViewModel的第一頁。 ViewModel只包含一個ObservableCollection。 當我在第二頁導航時,一切似乎都很好。但是,當我暫停該頁面上的應用程序時,該應用程序崩潰。長按後退按鈕或Windows鍵。 奇怪的是,這隻發生在我沒有調試時。當我調試一切作品時發現。掛起 - 恢復完美。

我可以在我的Lumia 920和模擬器上重現它。

我有點發現造成這種行爲的原因,但實際上它應該是一個原因。

當我導航離開,我調用此方法

Frame.Navigate(typeof(SecondPage), FirstPageViewModel); //names are fictive 

怪異行爲的原因是的ObservableCollection。如果我只傳遞一個字符串對象就沒問題。如果我創建一個本地列表並通過它,它會在暫停時崩潰。

我在想,我無法傳遞一個List對象,雖然沒有任何意義。 爲什麼它不會在調試器中發生。是否有可能在某個地方耗盡內存?

回答

3

該問題不涉及調試模式,因爲在調試時,the Suspending event is not raised,所以你的應用程序工作正常。

爲了更好地看到發生了什麼,請手動調用暫停事件(請參閱上面鏈接中的答案)。然後,您將能夠在調試模式下看到引發異常(及其類型)的位置。

我不能說什麼exacly導致問題(沒有看到的代碼),但您提供一個線,可能會很麻煩:

Frame.Navigate(typeof(SecondPage), FirstPageViewModel); 

這裏,您導航和傳遞一個對象,所以大概的地方,你retrive它。看,當你恢復你的應用程序,頁面被恢復,但你的對象通常不是。你將不得不使用一些NavigationHelper的方法 - SaveState/LoadState保存/加載您傳遞的數據或自己處理。

+0

感謝幫助了我很多 認爲按Windows鍵在仿真器中暫停 – 2014-09-04 19:28:53

1

如果您使用內建SuspensionManager類,則只能將「簡單」類型(字符串,字符,數字,GUID)作爲第二個參數傳遞給Frame.Navigate()。請參閱documentation for Frame.Navigate瞭解更多信息。

+0

是的,謝謝,他們應該減少它到字符串雖然 它說對象,但只涵蓋基本對象 – 2014-09-04 19:28:02

相關問題