MainWindowオブジェクトの設定を「再初期化」することに問題があります。OnNavigatedToもサスペンド後に呼び出すと思い、MainWindowに次のようなコードがあります。protectedoverride void OnNavigatedTo(NavigationEventArgs e){object.value = initValue; }
しかし、一時停止した後は呼び出されませんでした。では、一時停止後にこれをどのように行うことができますか?
MainWindowオブジェクトの設定を「再初期化」することに問題があります。OnNavigatedToもサスペンド後に呼び出すと思い、MainWindowに次のようなコードがあります。protectedoverride void OnNavigatedTo(NavigationEventArgs e){object.value = initValue; }
しかし、一時停止した後は呼び出されませんでした。では、一時停止後にこれをどのように行うことができますか?
VS2012 に付属の既定のテンプレートを使用すると、App.xaml.cs ファイルに次のコードが表示されます。
protected override async void OnLaunched(LaunchActivatedEventArgs args)
{
Frame rootFrame = Window.Current.Content as Frame;
// ... took out some code here
if (args.PreviousExecutionState == ApplicationExecutionState.Terminated)
{
// Restore the saved session state only when appropriate
try
{
await SuspensionManager.RestoreAsync();
}
catch (SuspensionManagerException)
{
//Something went wrong restoring state.
//Assume there is no state and continue
}
}
// ... took out some more code here
Window.Current.Activate();
}
ApplicationExecutionState の可能な値は次のとおりです。
public enum ApplicationExecutionState
{
// Summary:
// The app is not running.
NotRunning = 0,
//
// Summary:
// The app is running.
Running = 1,
//
// Summary:
// The app is suspended.
Suspended = 2,
//
// Summary:
// The app was terminated after being suspended.
Terminated = 3,
//
// Summary:
// The app was closed by the user.
ClosedByUser = 4,
}
したがって、別のifステートメントを追加するだけです
if (args.PreviousExecutionState == ApplicationExecutionState.Suspended)
サスペンド状態の後に実行したいコードを実行します。
ページ自体の以前の状態を復元するには、各ページの LayoutAwarePage 基本クラスで定義されている LoadState メソッドと SaveState メソッドを使用します (または独自の状態管理を実装します)。VS2012 に付属のテンプレート (例: Grid アプリケーション) は、状態管理のためにこれらすべてのトリックを既に使用しており、開始するのに適した方法です。
protected override void LoadState(Object navigationParameter, Dictionary<String, Object> pageState)
protected override void SaveState(Dictionary<String, Object> pageState)