メンテナンス トリガーの使用方法 (HTML)
[ この記事は、Windows ランタイム アプリを作成する Windows 8.x および Windows Phone 8.x 開発者を対象としています。Windows 10 向けの開発を行っている場合は、「最新のドキュメント」をご覧ください]
デバイスが接続されているときに、MaintenanceTrigger クラスを使って軽量のコードをバックグラウンドで実行する方法について説明します。
理解しておく必要があること
テクノロジ
必要条件
- この例は、デバイスが接続されているときにアプリを拡張するためにバックグラウンドで実行できる軽量のコードがあることを前提にしています。ここでは、MaintenanceTrigger クラスについて重点的に説明します。このクラスは、アプリがロック画面になくても MaintenanceTrigger バックグラウンド タスクを登録できるという意味で SystemTrigger と似ています。バックグラウンド タスク クラスの作成に関する詳しい情報については、「クイック スタート: バックグラウンド タスクの作成と登録」をご覧ください。
手順
ステップ 1: メンテナンス トリガー オブジェクトを作る
新しい MaintenanceTrigger オブジェクトを作ります。2 つ目のパラメーター (OneShot) では、メンテナンス タスクを一度だけ実行するか、定期的に実行を続けるかを指定します。OneShot を true に設定する場合は、1 つ目のパラメーター (FreshnessTime) に、バックグラウンド タスクをスケジュールするまで待機する時間 (分単位) を指定します。OneShot を false に設定した場合は、FreshnessTime に、バックグラウンド タスクを実行する間隔を指定します。
注 FreshnessTime が 15 分未満に設定された場合、バックグラウンド タスクの登録が試行されたときに例外がスローされます。
次のコード例では、1 時間に 1 回実行されるトリガーを作っています。
var waitIntervalMinutes = 60;
var taskTrigger = new Windows.ApplicationModel.Background.MaintenanceTrigger(waitIntervalMinutes, false);
ステップ 2: (省略可能) 条件の追加
いつタスクを実行するかを制御するバックグラウンド タスクの条件を必要に応じて追加します。条件を指定すると、条件が満たされるまではバックグラウンド タスクが実行されないようにすることができます。詳しくは「バックグラウンド タスクを実行するための条件を設定する方法」をご覧ください。
この例では、ユーザーがアクティブである場合 (またはユーザーがアクティブになった場合) にメンテナンスが実行されるように、条件を UserPresent に設定しています。指定できるバックグラウンド タスク条件の一覧については、「SystemConditionType」をご覧ください。
次のコードでは、バメンテナンス タスク ビルダーに条件を追加しています。
var exampleCondition = new Windows.ApplicationModel.Background.SystemCondition(Windows.ApplicationModel.Background.SystemConditionType.UserAway);
ステップ 3: バックグラウンド タスクの登録
バックグラウンド タスクの登録関数を呼び出してバックグラウンド タスクを登録します。バックグラウンド タスクの登録について詳しくは、「バックグラウンド タスクを登録する方法」をご覧ください。
次のコードでは、バックグラウンド タスクを登録しています。
var entryPoint = “js\\ExampleBackgroundTask.js”;
var taskName = “Maintenance background task example”;
var task = RegisterBackgroundTask(entryPoint, taskName, taskTrigger, exampleCondition);
注
Windows Phone ストア アプリでは、バックグラウンド タスクの登録を試みる前に RequestAccessAsync を呼び出す必要があります。Windows では、実行するにはアプリをロック画面に配置する必要があるバックグラウンド タスク セットにのみこの呼び出しが必要ですが、Phone ではどのバックグラウンド タスクを登録する場合でも、その前に一度このメソッドを呼び出す必要があります。
更新のリリース後に Windows Phone アプリが引き続き適切に実行されるようにするには、更新された後にアプリを起動するときに RemoveAccess、RequestAccessAsync の順に呼び出す必要があります。詳しくは、「バックグラウンド タスクのガイドライン (HTML)」をご覧ください。
注
Windows 8.1 以降では、バックグラウンド タスクの登録パラメーターが登録時に検証されます。いずれかの登録パラメーターが有効でない場合は、エラーが返されます。アプリは、バックグラウンド タスクの登録が失敗するシナリオを処理できる必要があります。たとえば、条件ステートメントを使って登録エラーを確認し、失敗した登録は別のパラメーター値を使ってやり直してみます。
注釈
デバイスが接続されるまで、メンテナンス トリガー イベントは開始されません。
注 デバイスが接続されていない場合、MaintenanceTrigger で開始された現在実行中のバックグラウンド タスクはすべて取り消されます (cancelReason = Abort)。バックグラウンド タスクの取り消しイベントを受け取ってから 5 秒以内にバックグラウンド タスクが取り消されないと、タスクが終了します。詳しくは、「取り消されたバックグラウンド タスクを処理する方法」をご覧ください。