2013-03-28 108 views
5

將我的狀態保存爲本地設置時遇到了一些問題。一切都只是情況確定,當有人使用ALT + F4 關閉我的應用程序並打開它10秒結束前(10秒後的應用是在暫停狀態和數據被保存)。 (技術XAML/C#)如何在Windows Store應用程序中保存我的狀態?

我保存在事件OnSuspending我的數據。

我加載我的數據在事件OnLaunched這樣的:

if (args.PreviousExecutionState == ApplicationExecutionState.Terminated || 
args.PreviousExecutionState == ApplicationExecutionState.ClosedByUser) 
{ 
    // save data 
} 

如何處理這種情況?我知道每當它改變時我都可以保存我的狀態,但我認爲在我的應用程序中這不是個好主意。 感謝您的幫助!

回答

2

當您關閉並啓動應用程序之前的10秒鐘以後創建它的另一個實例,前一個不運行OnSuspending事件(很奇怪,因爲這意味着這樣的事件的異步操作可以結束或者從來沒有開始,而不警告我們)。我認爲這很煩人,但爲什麼你的用戶會這樣做?大多數情況下,用戶會「重新啓動」應用程序,因爲它崩潰或卡住,無法返回主頁面。你應該嘗試阻止這種情況,而這種想法很少會發生。

但是,這也有可能發生,因爲用戶忘記做一些事情,想重新開始應用。爲了防止丟失用戶數據,我保存最重要的數據,只要我有機會,並保存其餘的只有OnSuspending方法。 您需要考慮丟失時什麼數據會讓您的用戶感到不安。

我認爲微軟應該得到保存應用程序狀態的更好的方法。我搜查了很多關於這個問題,並沒有找到解釋,所以現在我會繼續做我上面說的。我希望你提出的這個問題可以幫助我澄清這件事,在我看來,這是奇怪的情況。

0
onLaunched : 
    CoreWindow.GetForCurrentThread().Activated += App_Activated; 
and event: 
void App_Activated(CoreWindow sender, WindowActivatedEventArgs args) 
     { 



       if (args.WindowActivationState == CoreWindowActivationState.Deactivated) 
       { 
       //save Data 
       } 
     } 

將數據加載,刪除: if (args.PreviousExecutionState == ApplicationExecutionState.Terminated || args.PreviousExecutionState == ApplicationExecutionState.Closed ByUser)`。 它的工作原理!

+0

你應該解釋這是什麼,並格式化代碼 – letiagoalves

相關問題