2013-04-23 8 views
5

私はMicrosoftの表面上で実行しているWindows 8ストアアプリ(XAML/C#)を作成しました。このアプリは、基本的にセーブボタンを持たないデータ入力アプリケーションです。保存はページ間をジャンプするときやアプリケーションが中断したときに自動的に実行されます。Windows 8 Storeアプリケーションが終了するとデータを保存する

私が捉えることができない1つのシナリオは、ユーザーがアプリケーションを閉じるとき(ユーザーが画面の上から下にスワイプするとき)です。

だから私はApp.Current.Suspendingを購読すると、ここでセーブを呼び出した瞬間に:

App.Current.Suspending += Current_Suspending;     

void Current_Suspending(object sender, Windows.ApplicationModel.SuspendingEventArgs e) 
{ 
    Save(); 
} 

私はまた、ステートセーブメソッドをオーバーライドして、ここで保存を呼び出します。

protected override void SaveState(Dictionary<string, object> pageState) 
{ 
    Save(); 
    base.SaveState(pageState); 
} 

しかし、これらのnietherをアプリケーションが終了するとメソッドが呼び出されます。

誰かが、アプリケーションが終了したときに発砲するイベントを知っていますか?

おかげ

それは、以下の注意事項が含まれている一番下に
+0

単語の使用は「閉じました」。 Suspendingイベントが実際に発生するかどうかを判断できます。そうでない場合は、正しい方法でイベントにフックしないでください。この記事のように正しい方法でこれを行うのに役立ちます:http://msdn.microsoft.com/en-us/library/windows/apps/hh986968.aspx –

+1

一時停止イベントは、アプリケーションが一時停止しても終了したときに起動しますそれはしません。私が閉じていると言うと、ユーザーが画面を上から下にスワイプしている(またはAlt-F4を押している)ことを意味します。 – Sun

+0

一時停止イベントは、アプリケーションが中断されていない場合にのみ発生します。実際にアプリケーションが閉じられたときに発生するイベントを処理することによって、アプリケーションを永続的に処理する必要があります。 –

答えて

6

http://msdn.microsoft.com/en-US/library/windows/apps/xaml/hh465115.aspx

のVisual Studioを使用してデバッグに関する注意:Visual Studioのデバッガに接続されているアプリを中断からWindowsを防止。これは、アプリケーションの実行中にユーザーがVisual StudioのデバッグUIを表示できるようにするためです。アプリケーションをデバッグするときに、Visual Studioを使用して中断イベントを送信できます。 Debug Locationツールバーが表示されていることを確認し、Suspendアイコンをクリックします。

2

Windowsストアアプリケーションのライフサイクルに関するドキュメントを簡単に指摘するのは嫌ですが、ドキュメントはかなり明確です。 ALT-F4を押してアプリケーションを閉じたときに処理する特別なイベントはありません。Windowsストアアプリケーションは、中断されているか、単に実行されていないと考えられます。つまり、ユーザーのデータを頻繁に保存したり、そのようなデータを保存する方法を提供する必要があります。

ユーザーがアプリを終了したことを示す特別なイベントはありません。 ユーザーがアプリケーションを終了すると、アプリが停止して が終了し、約10秒以内にNotRunning状態に入ります。アプリが に登録されている場合、Suspending | イベントを停止すると、アプリケーションが中断されたときに呼び出されます。このイベント ハンドラを使用して、関連するアプリケーションとユーザデータを永続的な ストレージに保存できます。

ユーザーが を終了した後にアプリが起動したときの動作を決める必要があります。アプリ がWindowsで終了したのか、ユーザーによって終了したのかはまったく違いはありません。アプリが がWindowsで終了したときよりもユーザーによって閉じられたときに別のものを で実行する必要がある場合は、 のアプリがユーザーまたはWindowsによって終了されたかどうかを判断できます。 ApplicationExecutionState列挙のドキュメントのClosedByUserおよびTerminated状態の説明 を参照してください。

アプリは絶対に 必要な場合を除き、プログラムで自分自身を閉じてはいけません。アプリはメモリリークを検出した場合、それはユーザーの個人データのセキュリティを確保するために 自体を閉じることができます。あなたがプログラムでアプリを閉じる すると、Windowsはアプリのクラッシュとしてこれを扱います。あなたは、アプリケーションが少し混乱している中断さについて話すとき

Source

関連する問題