私はあなたの質問の1つの側面を読みすぎているかもしれませんが、SuspensionManager
との役割は、中断中にアプリケーションが実際に終了した場合SessionState
に、アプリケーションをユーザーが残した場所に戻すのに十分な情報を保存することです.
Windows 8のアプリケーション ライフサイクルでは、別のアプリがフォアグラウンドになると、アプリは「一時停止」されます。アプリが一時停止している間、その状態はすべてメモリに保持され、再アクティブ化すると (元に戻すと)、すべて* が「無料で」復元されます。
ただし、中断されたアプリは、OS によって終了される可能性もあり (たとえば、メモリ プレッシャの b/c)、アプリでそのシナリオに対応する機会がないため、実際に行っていることは、必要なものをSessionState
保存することです。アプリケーションが実際に終了した場合に、ユーザーが最後にいた場所を「再作成」します。これは本質的には保険です。アプリケーションが単に一時停止されている場合は、実際には必要ありません。 SessionState
「必要なもの」は灰色の領域です。たとえば、進行中のユーザー プロファイルに関するすべての情報を保存することも、すべてのユーザー プロファイル データの永続ストレージにインデックスを作成するユーザー ID だけを保存することもできます。私は一般的に、よりミニマリストな見方をしており、可能な限り保持するSessionState
ことはありません.
あなたの質問にSessionState
は、アプリ内のページ間で情報を渡すために使用しているという意味もありますが、それは実際の意図ではありません。通常、アプリの各ページはビュー モデルに関連付けられており、そのアプリのページを操作すると、ビュー モデルが更新され、ビュー モデルに既に存在する変更から追加の画面とエクスペリエンスが駆動されます。アプリの 1 つの画面を離れてメインの画面に戻るということは、収集した情報が何であれ永続化されていることを意味します。ビュー モデルはもちろん、データベースやローカル ストレージなどの永続的なものにも永続化されます。そのページに再度アクセスすると、ビュー モデル (またはその永続ストレージ) からデータが取り出されます。メインページはその情報を必要としないのに、なぜそれを保持するのですか?
最後に、WinRT は初めてだとおっしゃっていたので、 App Builderをチェックしてみてください。これは、消費可能なチャンクに多数のリソースをまとめて、30 日間にわたってアプリを構築する方法を導きます (ただし、すべての資料は利用可能ですが、そのため、好きなペースで消費できます :)) あなたの質問に密接に関連するライフサイクル管理の議論は、そのシーケンスの 17 日目に始まります。
※「すべて無料で復元」とは、アプリの一時停止状態が解除されたときに、何もする必要がないという意味ではありません。更新が必要な古いデータが存在する可能性があり、接続またはその他の一時的または短命のエンティティを更新/再作成する必要がある場合があります。