保留中のバックグラウンド タスクのリストを取得する方法 (HTML)
[ この記事は、Windows ランタイム アプリを作成する Windows 8.x および Windows Phone 8.x 開発者を対象としています。Windows 10 向けの開発を行っている場合は、「最新のドキュメント」をご覧ください]
アプリで現在登録されているバックグラウンド タスクの一覧を取得する方法について説明します。 この一覧には、前のセッション中にアプリがフォアグラウンドで登録したバックグラウンド タスクが含まれているため、これをチェックすることで、同じバックグラウンド タスクの再登録を未然に防ぐことができます。詳しくは、「バックグラウンド タスクを登録する方法」をご覧ください。
理解しておく必要があること
テクノロジ
必要条件
- このトピックでは、既にバックグラウンド タスクを登録したアプリがあり、登録されたバックグラウンド タスクが、「取り消されたバックグラウンド タスクを処理する方法」の説明に従って、取り消しや進行に対応できることを前提とします。バックグラウンド タスクを直ちに構築する場合は、「クイック スタート: バックグラウンド タスクの作成と登録」をご覧ください。条件とトリガーについて詳しくは、「バックグラウンド タスクによるアプリのサポート」をご覧ください。
手順
ステップ 1:
アプリケーションで現在登録されているバックグラウンド タスクの一覧は、Windows.ApplicationModel.Background.BackgroundTaskRegistration.AllTasks プロパティで保持されます。while ループを使って一覧を反復処理し、バックグラウンド タスクの名前を探します。
たとえば、バックグラウンド タスクのサンプルでは、登録前に、次のコードを使って ServicingComplete バックグラウンド タスクが既に登録されていないかどうかを確認します。
//
// Check whether the servicing-complete background task is already registered.
//
var iter = Windows.ApplicationModel.Background.BackgroundTaskRegistration.allTasks.first();
var hascur = iter.hasCurrent;
while (hascur) {
var cur = iter.current.value;
if (cur.name === BackgroundTaskSample.servicingCompleteTaskName) {
BackgroundTaskSample.updateBackgroundTaskStatus(BackgroundTaskSample.servicingCompleteTaskName, true);
return;
}
hascur = iter.moveNext();
}
ステップ 2:
バックグラウンド タスクを登録するアプリは、複数の状況で登録を調べる可能性があります。このタスクは、バックグラウンド タスクをその名前に基づいて検索する関数を作ることで、簡単に行うことができます。タスクが見つからない場合にはこの関数は null を返すため、アプリはタスクを登録するかどうかなどを決定できます。
次に、アプリで使うことができる関数を示します。
//
// Check for a registration of the named background task. If one exists,
// return it.
//
function FindTask(taskName) {
var taskRegistered = false;
var background = Windows.ApplicationModel.Background;
var iter = background.BackgroundTaskRegistration.allTasks.first();
var hascur = iter.hasCurrent;
while (hascur) {
var cur = iter.current.value;
if (cur.name === taskName) {
//
// The task is registered, return it.
//
return cur;
}
hascur = iter.moveNext();
}
//
// The task was not found. Return null.
//
return null;
}