雑記 - otherwise

最近はDQ10しかやっていないダメ技術者がちまちまと綴る雑記帳

わんくま東京勉強会 #64 アフターフォロー (18) : Windows Phone Application lifecycle

アプリケーション起動中に電話がかかってくる、スクリーンロックがかかる、省電力モードになる等、スマートフォンではアプリケーションが中断するシチュエーションがたくさんあります。
また、 Windows Phone は同時に起動出来るアプリケーションの数が 1 つに制限されているので、起動中のアプリケーションが非アクティブ化されると自動的に一時停止(中断)する様になっています。
一時停止したアプリケーションは Back ボタンやタスク切替機能で再アクティブ化出来る様になっていますが、アプリケーション側は再アクティブ化される際にアプリケーション内の状態(データ、ステータス等)を復元させる必要があります。

アプリケーションの状態 (Windows Phone Application lifecycle)

Windows Phone アプリケーションには以下の 3 つの状態が存在します。

Running
アプリケーションが起動している(アクティブ)状態です。アプリケーションの UI が有効で全てのイベントが発行されます。
Dormant
アプリケーションが一時停止している状態です。アプリケーションの UI は無効であり全てのイベントは発行されませんが、アプリケーションのインスタンスは保持されます。(従って、アプリケーション内でメモリ保持しているデータは全て有効のままになります)
Tombstoned
アプリケーションが一時停止している状態です。アプリケーションのインスタンスがすべて破棄されます。従って、アプリケーション内でメモリ保持していたデータもすべて破棄されます。
アプリケーションの非アクティブ化時

アプリケーションが非アクティブ化されると Dormant 状態に移行します。
Dormant 状態ではアプリケーションが非アクティブ化されているだけなので、 Dormant 状態からアプリケーションが復帰する場合は、アプリケーション側は特に処理を行う必要はありません。

アプリケーションの Tombstone 化

他のアプリケーションの処理等で端末内のメモリが確保しきれなくなると、 Windows Phone は自動的に Dormant 状態のアプリケーションを Tombstone 状態に移行させます。
Tombstone 状態からアプリケーションが復帰する場合は、アプリケーション側も復帰処理を行う必要があります。