我有一個使用MvvmCross的WinRT應用,我想存儲當前會話狀態。暫停Windows應用商店應用:調用MvxSuspensionManager.SaveAsync()時出錯
在塔App.xaml.cs註冊我的應用程序與懸架經理內容框架的OnLaunch方法:
每當我暫停應用程序,並在OnSuspending事件處理
運行代碼var suspensionManager = Mvx.GetSingleton<IMvxSuspensionManager>() as MvxSuspensionManager;
await suspensionManager.SaveAsync();
我收到以下異常。
Cirrious.MvvmCross.WindowsStore.Views.Suspension.MvxSuspensionManagerException "MvxSuspensionManager failed"
at Cirrious.MvvmCross.WindowsStore.Views.Suspension.MvxSuspensionManager.<SaveAsync>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
at ****App.xaml.cs:line 129
System.Runtime.InteropServices.COMException "Unbekannter Fehler
"
at Windows.UI.Xaml.Controls.Frame.GetNavigationState()
at Cirrious.MvvmCross.WindowsStore.Views.Suspension.MvxSuspensionManager.SaveFrameNavigationState(Frame frame)
at Cirrious.MvvmCross.WindowsStore.Views.Suspension.MvxSuspensionManager.<SaveAsync>d__0.MoveNext()
我敢肯定,我可以縮小例外根到的WinRT API調用
Frame.GetNavigationState();
由該MvxSuspensionManager執行
。當我直接調用這個函數時,它會失敗並出現相同的錯誤。
我知道WinRT幀導航堆棧只能在非複雜類型用作導航參數時序列化。但即使我暫停在第一頁上,我的應用程序也會崩潰。
也許我用MvvmCross掛起的方法是錯誤的,或者我錯過了一些要正確設置的步驟。
任何幫助,高度讚賞!
非常感謝你。這讓我瘋狂,我的CustomPresenter並沒有真正的用處,因爲我缺少了這個:this.OnViewCreate(req,()=> LoadStateBundle(e));在我所有的觀點。 –
此解決方案現在已合併到MvvmCross中 –