エクスポート (0) 印刷
すべて展開
情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

アプリを中断する方法 (XAML)

システムがアプリを一時停止するときに重要なアプリケーション データを保存する方法を説明します。このトピックの例では、Suspending イベントのイベント ハンドラーを登録して文字列をファイルに保存します。

ロードマップ: このトピックと他のトピックとの関連については、以下をご覧ください。

手順

ステップ 1: suspending イベント ハンドラーに登録する

Suspending イベントを処理するために登録します。このイベントは、システムがアプリを一時停止する前にアプリでアプリケーション データを保存する必要があることを示します。


using System;
using Windows.ApplicationModel;
using Windows.ApplicationModel.Activation;
using Windows.UI.Xaml;

partial class MainPage
{
   public MainPage()
   {
      InitializeComponent();
      Application.Current.Suspending += new SuspendingEventHandler(App_Suspending);
   }
}

ステップ 2: 一時停止の前にアプリケーション データを保存する

アプリでは、Suspending イベントを処理する時点で、ハンドラー関数で重要なアプリケーション データを保存できます。アプリで LocalSettings Storage API を使って、シンプルなアプリケーション データを同期的に保存する必要があります。


partial class MainPage
{
    async void App_Suspending(
        Object sender, 
        Windows.ApplicationModel.SuspendingEventArgs e)
    {
        // TODO: This is the time to save app data in case the process is terminated
    }
}

ステップ 3: 排他リソースとファイル ハンドルを解放する

アプリでは、Suspending イベントを処理する時点で、排他リソースとファイル ハンドルを解放することもできます。排他リソースには、カメラ、I/O デバイス、外部デバイス、ネットワーク リソースなどがあります。排他リソースとファイル ハンドルを明示的に解放すると、自分のアプリが使っていないときに他のアプリが排他リソースとファイル ハンドルにアクセスできるようになります。アプリが終了後にアクティブ化されるときに、排他リソースとファイル ハンドルを開く必要があります。

注釈

ユーザーが別のアプリや、デスクトップまたはスタート画面に切り替えると、システムはアプリを一時停止します。ユーザーが元のアプリに戻すと、システムはアプリを再開します。システムがアプリを再開した時点で、変数とデータ構造の内容は、システムがアプリを一時停止する前の状態と同じです。システムはアプリを厳密に一時停止前の状態に復元するので、ユーザーからはアプリがバックグラウンドで実行していたように見えます。

システムは、アプリの一時停止中、アプリとそのデータをメモリに保持するよう試みます。ただし、アプリをメモリに保持するためのリソースがシステムにない場合、システムはアプリを終了します。一時停止されてから終了されたアプリにユーザーが戻るときに、システムは Activated イベントを送って、OnLaunched メソッドでアプリケーション データを復元する必要があります。

アプリが終了されるときは、システムはアプリに通知を送らないので、アプリは一時停止されたときにアプリケーション データを保存し、排他リソースとファイル ハンドルを解放して、アプリが終了後アクティブ化されるときにそれらを復元する必要があります。

   アプリの中断が進められているときに非同期作業が必要になった場合には、その作業が完了するまで中断の完了を遅らせる必要があります。返された SuspendingDeferral オブジェクトに Complete メソッドを呼び出すまで中断の完了を遅らせるには、SuspendingOperation オブジェクト (イベント引数経由で利用可能) に対して GetDeferral メソッドを使います。
  Windows 8.1 でシステムの応答性を向上させるために、アプリには中断後にリソースへの優先度の低いアクセスが与えられます。この新しい優先度をサポートするために、中断操作のタイムアウトが延長され、アプリには通常の優先度と同程度のタイムアウト (Windows では 5 秒、Windows Phone では 1 ~ 10 秒) が与えられます。 このタイムアウトの時間枠を延長したり、変更したりすることはできません。

Microsoft Visual Studio によるデバッグに関する注意事項:  Visual Studio は、Visual Studio デバッガーにアタッチされているアプリを Windows が中断するのを防ぎます。これは、アプリが実行されている間、ユーザーが Visual Studio デバッグの UI を確認できるようにするためです。アプリのデバッグ中は、Visual Studio を使ってそのアプリに中断イベントを送信できます。 [デバッグの場所] ツール バーが表示されていることを確認し、[中断] アイコンをクリックします。

関連トピック

タスク
アプリをアクティブ化する方法
アプリを再開する方法
概念
アプリケーションのライフサイクル
ガイドライン
アプリの一時停止と再開のガイドライン
辞書/リファレンス
Windows.UI.Xaml.Application

 

 

表示:
© 2015 Microsoft