言語: HTML | XAML

メンテナンス トリガーの使用方法 (XAML)

デバイスが接続されているときに、MaintenanceTrigger クラスを使って軽量のコードをバックグラウンドで実行する方法について説明します。

理解しておく必要があること

テクノロジ

必要条件

  • この例は、デバイスが接続されているときにアプリを拡張するためにバックグラウンドで実行できる軽量のコードがあることを前提にしています。ここでは、MaintenanceTrigger クラスについて重点的に説明します。このクラスは、アプリがロック画面になくても MaintenanceTrigger バックグラウンド タスクを登録できるという意味で SystemTrigger と似ています。バックグラウンド タスク クラスの作成に関する詳しい情報については、「クイック スタート: バックグラウンド タスクの作成と登録」をご覧ください。

手順

ステップ 1: メンテナンス トリガー オブジェクトを作る

  • 新しい MaintenanceTrigger オブジェクトを作ります。2 つ目のパラメーター (OneShot) では、メンテナンス タスクを一度だけ実行するか、定期的に実行を続けるかを指定します。OneShot を true に設定する場合は、1 つ目のパラメーター (FreshnessTime) に、バックグラウンド タスクをスケジュールするまで待機する時間 (分単位) を指定します。OneShot を false に設定した場合は、FreshnessTime に、バックグラウンド タスクを実行する間隔を指定します。

      FreshnessTime が 15 分未満に設定された場合、バックグラウンド タスクの登録が試行されたときに例外がスローされます。

    次のコード例では、1 時間に 1 回実行されるトリガーを作っています。

    
    
    uint waitIntervalMinutes = 60;
    
    MaintenanceTrigger taskTrigger = new MaintenanceTrigger(waitIntervalMinutes, false);
    
    

ステップ 2: (省略可能) 条件の追加

  • いつタスクを実行するかを制御するバックグラウンド タスクの条件を必要に応じて作成します。条件を指定すると、条件が満たされるまではバックグラウンド タスクが実行されないようにすることができます。詳しくは「バックグラウンド タスクを実行するための条件を設定する方法」をご覧ください。

    この例では、インターネットが利用できる場合 (またはインターネットが利用できるようになった場合) にメンテナンスが実行されるように、条件を InternetAvailable に設定しています。指定できるバックグラウンド タスク条件の一覧については、「SystemConditionType」をご覧ください。

    次のコードでは、バメンテナンス タスク ビルダーに条件を追加しています。

    
    SystemCondition exampleCondition = new SystemCondition(SystemConditionType.InternetAvailable);
    
    

ステップ 3: バックグラウンド タスクの登録

  • バックグラウンド タスクの登録関数を呼び出してバックグラウンド タスクを登録します。バックグラウンド タスクの登録について詳しくは、「バックグラウンド タスクを登録する方法」をご覧ください。

    次のコードでは、メンテナンス タスクを登録しています。

    
    string entryPoint = "Tasks.ExampleBackgroundTaskClass";
    string taskName   = "Maintenance background task example";
    
    BackgroundTaskRegistration task = RegisterBackgroundTask(entryPoint, taskName, taskTrigger, exampleCondition);
    
    

      

    Windows Phone ストア アプリでは、デバイスのメモリが少なくなった場合、警告や OnCanceled イベントの発生なしにバックグラウンド タスクが終了することがあります。こうすることで、フォアグラウンドのアプリのユーザー エクスペリエンスが保証されます。バックグラウンド タスクは、このシナリオを処理できるように設計する必要があります。バックグラウンド タスクの登録を試みる前に RequestAccessAsync を呼び出す必要があります。Windows では、実行するにはアプリをロック画面に配置する必要があるバックグラウンド タスク セットにのみこの呼び出しが必要ですが、Phone ではどのバックグラウンド タスクを登録する場合でも、その前に一度このメソッドを呼び出す必要があります。

    更新プログラムのリリース後に Windows Phone ストア アプリが引き続き適切に実行されるようにするには、更新された後にアプリを起動するときに RemoveAccessRequestAccessAsync の順に呼び出す必要があります。詳しくは、「バックグラウンド タスクのガイドライン (Windows ランタイム アプリ)」をご覧ください。

      

    Windows 8.1 以降では、バックグラウンド タスクの登録パラメーターが登録時に検証されます。いずれかの登録パラメーターが有効でない場合は、エラーが返されます。アプリは、バックグラウンド タスクの登録が失敗するシナリオを処理できる必要があります。たとえば、条件ステートメントを使って登録エラーを確認し、失敗した登録は別のパラメーター値を使ってやり直してみます。

注釈

デバイスが接続されるまで、メンテナンス トリガー イベントは開始されません。

  デバイスが接続されていない場合、MaintenanceTrigger で開始された現在実行中のバックグラウンド タスクはすべて取り消されます (cancelReason = Abort)。バックグラウンド タスクの取り消しイベントを受け取ってから 5 秒以内にバックグラウンド タスクが取り消されないと、タスクが終了します。詳しくは、「取り消されたバックグラウンド タスクを処理する方法」をご覧ください。

関連トピック

クイック スタート: バックグラウンド タスクの作成と登録
バックグラウンド タスクを登録する方法
バックグラウンド タスクでシステム イベントに応答する方法
バックグラウンド タスクを実行するための条件を設定する方法
アプリケーション マニフェストでバックグラウンド タスクを宣言する方法
How to debug a background task
バックグラウンド タスクのガイドラインとチェック リスト

 

 

表示:
© 2015 Microsoft