バックグラウンド タスクを実行するための条件を設定する方法 (HTML)
[ この記事は、Windows ランタイム アプリを作成する Windows 8.x および Windows Phone 8.x 開発者を対象としています。Windows 10 向けの開発を行っている場合は、「最新のドキュメント」をご覧ください]
バックグラウンド タスクを実行するための条件を設定する方法について学習します。条件を設定すると、必要な場合にのみバックグラウンド タスクを実行できます。 場合によっては、バックグラウンド タスクを正しく実行するために、タスクをトリガーするイベント以外に特定の条件を満たす必要があります。バックグラウンド タスクを登録するときに、SystemConditionType で指定される条件を 1 つ以上指定することができます。条件がチェックされるのは、トリガーが発生した後です。バックグラウンド タスクは、キューに入れられますが、必要な条件がすべて満たされるまでは実行されません。
バックグラウンド タスクに条件を設定すると、タスクが不必要に実行されなくなるため、バッテリ寿命と CPU 実行時間が節約できます。たとえば、バックグラウンド タスクがタイマーで実行され、インターネット接続が必要な場合は、タスクを登録する前に、InternetAvailable 条件を TaskBuilder に追加します。これにより、タイマーの設定時間が経過した後、インターネットが利用可能であれば実行が許可されるため、タスクがシステム リソースやバッテリー寿命を無駄にすることはなくなります。
理解しておく必要があること
テクノロジ
必要条件
- ここでは、既にバックグラウンド タスクがアプリと関連付けられており、アプリでは、taskBuilder という BackgroundTaskBuilder オブジェクトを作るためのコードが記述済みであることを前提とします。
手順
ステップ 1: SystemCondition オブジェクトを作る
条件を追加する前に、バックグラウンド タスクを実行するために有効にする必要のある条件を表す SystemCondition オブジェクトを作ります。コンストラクターで、SystemConditionType 列挙値を渡して、必要な条件を指定します。
次のコードでは、満たす必要のある要件としてインターネットの可用性を条件付ける SystemCondition オブジェクトを作ります。
var internetCondition = new Windows.ApplicationModel.Background.SystemCondition(Windows.ApplicationModel.Background.SystemConditionType.InternetAvailable);
ステップ 2: SystemCondition オブジェクトをバックグラウンド タスクに追加する
条件を追加するには、BackgroundTaskBuilder オブジェクトで AddCondition メソッドを呼び出して、SystemCondition オブジェクトに渡します。
次のコードでは、InternetAvailable バックグラウンド タスク条件を TaskBuilder に登録します。
taskBuilder.AddCondition(internetCondition);
ステップ 3: バックグラウンド タスクを登録する
これで、バックグラウンド タスクを Register メソッドに登録できます。このタスクは、指定した条件が満たされるまで、開始されません。
次のコードでは、タスクを登録し、生成される BackgroundTaskRegistration オブジェクトを保存します。
var task = taskBuilder.Register();
注
Windows Phone ストア アプリでは、バックグラウンド タスクの登録を試みる前に RequestAccessAsync を呼び出す必要があります。Windows では、実行するにはアプリをロック画面に配置する必要があるバックグラウンド タスク セットにのみこの呼び出しが必要ですが、Phone ではどのバックグラウンド タスクを登録する場合でも、その前に一度このメソッドを呼び出す必要があります。
更新のリリース後に Windows Phone アプリが引き続き適切に実行されるようにするには、更新された後にアプリを起動するときに RemoveAccess、RequestAccessAsync の順に呼び出す必要があります。詳しくは、「バックグラウンド タスクのガイドライン (HTML)」をご覧ください。
注
Windows 8.1 以降では、バックグラウンド タスクの登録パラメーターが登録時に検証されます。いずれかの登録パラメーターが有効でない場合は、エラーが返されます。アプリは、バックグラウンド タスクの登録が失敗するシナリオを処理できる必要があります。たとえば、条件ステートメントを使って登録エラーを確認し、失敗した登録は別のパラメーター値を使ってやり直してみます。
ステップ 4: バックグラウンド タスクに複数の条件を設定する
複数の条件を追加するには、アプリから AddCondition メソッドを複数回呼び出します。呼び出しは必ず、タスクの登録が有効になる前に行います。
注 1 つのバックグラウンド タスクに競合する条件を追加しないように注意してください。
次のスニペットでは、バックグラウンド タスクを作り、登録するコンテキストでの複数の条件を示したものです。
var hourlyTrigger = new Windows.ApplicationModel.Background.TimeTrigger(60, false);
var recurringTaskBuilder = new Windows.ApplicationModel.Background.BackgroundTaskBuilder();
recurringTaskBuilder.Name = "Hourly background task for YourApp";
recurringTaskBuilder.TaskEntryPoint = "js\\ExampleBackgroundTask.js";
recurringTaskBuilder.SetTrigger(hourlytrigger);
//
// Begin adding conditions.
//
var userCondition = new Windows.ApplicationModel.Background.SystemCondition(Windows.ApplicationModel.Background.SystemConditionType.UserPresent);
var internetCondition = new Windows.ApplicationModel.Background.SystemCondition(Windows.ApplicationModel.Background.SystemConditionType.InternetAvailable);
taskBuilder.AddCondition(userCondition);
taskBuilder.AddCondition(internetCondition);
//
// Done adding conditions. Now we register the background task.
//
var task = recurringTaskBuilder.Register();
注釈
注 バックグラウンド タスクが必要なときに実行され、機能しない場合には実行されないようにするために、バックグラウンド タスクには正しい条件を選んでください。バックグラウンド タスクの各条件については、「SystemConditionType」をご覧ください。