Fast App Resume for Windows Phone 8

Windows Phone 8 SDK Advent Calendarの5日目です。

Windows Phone 8で追加されたFast App Resumeについての紹介です。

Windows Phone 7.5(Mango)からFast App Switchingという機能のが追加されました。これは以前に動いていたアプリケーションをメモリ上に残すことで、バックボタンやタスクスイッチャーで元のアプリケーションに戻ってきた時に、なにもしなくても以前の状態のまま起動することができました。

Windowds Phone 8からはそれに付け加えFast App Resumeという機能が使えます。もともと利用できたFast App Switchingではタイルの画面からアプリケーションを起動すると、アプリケーションは新しいインスタンスを起動していましたが、Fast App Resumeではもしメモリ上にアプリケーションが残っていたらタイルの画面からアプリケーションを起動しても新しいインスタンスを生成せずに以前の状態を残して起動します。

Fast App ResumeはデフォルトではOffになっているので、もし有効にしたければWMAppManifest.xmlに以下のようにActivationPolicyをResumeに設定します。

<DefaultTask Name="_default" NavigationPage="MainPage.xaml" ActivationPolicy="Resume"/>

これだけでFast App Resumeの恩恵を受けることができます。


ただしこれは簡単に設定はできますが使うときは要注意です。というのもアプリケーションをどのように起動するかによって履歴を残すべきかどうか考慮する必要があるからです。
アプリケーションを起動するタイミングについて考えてみましょう。

  1. スタート画面のアプリケーションのリスト
  2. スタートに立てたピン
  3. アプリケーションから作成したセカンダリータイル
  4. トースト通知
  5. ...

このようにアプリケーションが起動するタイミングはたくさんあります。それぞれについて以前の状態を復元してよいのか考慮する必要があります。
例えばセカンダリタイルやトースト通知から起動したときはどうでしょう?これらは特定のページを開くための機能なので、過去の状態とは関係がありません。そのため過去の履歴は残っていてほしくないはずです。もしFast App Resumeを有効にすると過去の履歴が残っているので、そのときは自前で履歴を削除する必要があります。

このようにFast App Resumeはとても簡単に利用できるのですがプログラム上でさまざまな起動パターンを考慮しなければなりません。
次回はこの実装について見ていきたいと思います。