バックグラウンド タスクのガイドラインとチェック リスト (HTML)
[ この記事は、Windows ランタイム アプリを作成する Windows 8.x および Windows Phone 8.x 開発者を対象としています。Windows 10 向けの開発を行っている場合は、「最新のドキュメント」をご覧ください]
アプリをサポートする適切なバックグラウンド タスクを作り、アプリがバックグラウンド タスクを実行するためのすべての要件を満たしていることを確認します。
バックグラウンド タスクのガイダンス
バックグラウンド タスクの開発時とアプリの公開前に、次のガイダンスについて検討します。
バックグラウンド タスクの終了: バックグラウンド タスクが完了したら、忘れずに close() メソッドを呼び出してください。バックグラウンド タスクを終了しないと、その実行プロセスによってメモリとバッテリーの寿命が消費され続けます。バックグラウンド タスクが完了またはキャンセルされたとしても同様です。
CPU クォータとネットワーク クォータ: バックグラウンド タスクに適用する CPU クォータ、またはネットワーク データ使用量クォータを超えないようにしてください。バッテリーの寿命を長くし、フォアグラウンド アプリで優れたユーザー エクスペリエンスを実現できるように、バックグラウンド タスクは軽量である必要があります。バックグラウンド タスクに適用されるリソースの制約については、「バックグラウンド タスクによるアプリのサポート」をご覧ください。
バックグラウンド タスクの管理: アプリでは、登録済みのバックグラウンド タスクの一覧を取得し、進行状況ハンドラーと完了ハンドラーを登録して、各イベントを適切に処理する必要があります。バックグラウンド タスクでは、進行状況、キャンセル、完了を報告する必要があります。「保留中のバックグラウンド タスクのリストを取得する方法」、「キャンセルされたバックグラウンド タスクを処理する方法」、「バックグラウンド タスクの進行状況と完了を監視する方法」をご覧ください。
アプリ マニフェストの更新: アプリケーション マニフェストで、各バックグラウンド タスクと共に、バックグラウンド タスクで使うトリガーの種類を宣言します。この宣言がないと、アプリでは実行時にバックグラウンド タスクを登録できません。詳しくは、「アプリ マニフェストでバックグラウンド タスクを宣言する方法」をご覧ください。
アプリ更新の準備: アプリを更新する場合は、フォアグラウンドでの実行以外のコンテキストで必要となるアプリの更新を実行できるように ServicingComplete バックグラウンド タスクを作り、登録します (「SystemTriggerType」をご覧ください)。
Windows のロック画面対応アプリを対象とするバックグラウンド タスク: ロック画面は、共有のリソースです。ロック画面に同時に配置できるアプリは 7 個までです。ワイド タイルは 1 つだけ表示されます。RequestAccessAsync メソッドを使ってロック画面アクセスを要求し、アプリをロック画面に配置することなくそのまま動作させることで、良好なユーザー エクスペリエンスを維持することができます。ロック画面に配置されていないアプリでも、タイルの更新、バッジの更新、通知の送信、システム イベント トリガーの登録を行うことができます。ユーザーがアプリをロック画面に配置していない場合でも、アプリがフォアグラウンドで実行されているときは、ユーザー エクスペリエンスに中断が生じないようにしてください。
「ロック画面の概要」を読んで、アプリをロック画面に置くことが適切かどうかを判断してください。
Windows Phone ストア アプリでバックグラウンド タスクの実行を要求する:
Windows Phone ストア アプリは、ロック画面にピン留めしなくても、サポートされているすべての種類のタスクを実行できます。ただし、どの種類のバックグラウンド タスクを登録する場合でも、その前にアプリが RequestAccessAsync を呼び出す必要があります。バックグラウンド タスクを使うアプリの数がシステム全体で指定されている最大数を超過した場合、またはユーザーがデバイス設定でバックグラウンド タスクに対するアプリのアクセス許可を明示的に拒否した場合、このメソッドは BackgroundAccessStatus.Denied を返します。
Windows Phone ストア アプリが更新される場合は、更新された後にアプリが起動するときに RemoveAccess、RequestAccessAsync の順に呼び出す必要があります。アプリが更新されたかどうかを判断するには、ローカル設定に格納されている値を使って、アプリのバージョン番号を追跡する必要があります。アプリが起動したら、アプリのバージョンを確認し、ローカル設定のバージョンより新しい場合は、RemoveAccess と RequestAccessAsync を呼び出します。これを行うには、次のようなコードを追加し、アプリの起動イベント ハンドラーから呼び出します。
function checkAppVersion() {
var localSettings = Windows.Storage.ApplicationData.current.localSettings;
var pkgVersion = Windows.ApplicationModel.Package.current.id.version;
var backgroundExecMgr = Windows.ApplicationModel.Background.BackgroundExecutionManager;
var appVersion = pkgVersion.build + "." +
pkgVersion.major + "." +
pkgVersion.minor + "." +
pkgVersion.revision;
if (localSettings.values["appVersion"] != appVersion)
{
// Our app has been updated
localSettings.values["appVersion"] = appVersion;
// Call removeAccess
backgroundExecMgr.removeAccess();
}
backgroundExecMgr.requestAccessAsync();
}
バックグラウンド タスクのチェック リスト
すべてのバックグラウンド タスクに次のチェック リストが適用されます。
バックグラウンド タスクを適切なトリガーに関連付けます。
条件を追加して、バックグラウンド タスクが適切に実行されるようにします。
バックグラウンド タスクの進行、完了、取り消しを処理します。
バックグラウンド タスクでは、トースト、タイル、バッジの更新以外の UI は表示しません。
バックグラウンド タスクの処理が完了したら、close() を呼び出します。
固定ストレージを使って、バックグラウンド タスクとアプリ間でデータを共有します。
アプリケーション マニフェストで、各バックグラウンド タスクと共に、バックグラウンド タスクで使うトリガーの種類を宣言します。エントリ ポイントとトリガーの種類が正しいことを確認します。
バックグラウンド タスクの存続期間は短くします。「バックグラウンド タスクによるアプリのサポート」に示されている CPU クォータまたはネットワーク クォータを超えないようにしてください。
バックグラウンド タスクでのユーザー操作に依存することはできません。
バックグラウンド タスクの登録エラーを確認します。必要に応じて、別のパラメーター値でバックグラウンド タスクをもう一度登録してみます。
Windows: ロック画面対応アプリのバックグラウンド タスクのチェック リスト
ロック画面に配置できるアプリのバックグラウンド タスクを開発する際は、このガイダンスに従ってください。また、「ロック画面のタイルのガイドラインとチェック リスト」のガイダンスにも従ってください。
ロック画面対応として開発する前に、アプリをロック画面に配置する必要があるかどうかを確認します。詳しくは、「ロック画面の概要」を参照してください。
ロック画面に配置しなくてもアプリが動作することを確認します。
RequestAccessAsync メソッドを使ってロック画面のアクセスを要求します。
TimeTrigger で登録されたバックグラウンド タスクを組み込み、このタスクをアプリ マニフェストで宣言します。エントリ ポイントとトリガーの種類が正しいことを確認します。 これは、認定の際に必要になります。これにより、ユーザーはロック画面にアプリを配置することができます。
ロック画面対応アプリであっても、バックグラウンド タスクの存続期間は短くします。「バックグラウンド タスクによるアプリのサポート」に示されている CPU クォータまたはネットワーク クォータを超えないようにしてください。
Windows Phone ストア アプリでは、デバイスのメモリが少なくなった場合、警告や OnCanceled イベントの発生なしにバックグラウンド タスクが終了することがあります。こうすることで、フォアグラウンドのアプリのユーザー エクスペリエンスが保証されます。バックグラウンド タスクは、このシナリオを処理できるように設計する必要があります。
関連トピック
その他の関連するバックグラウンド タスクのトピック
アプリケーション マニフェストでバックグラウンド タスクを宣言する方法
Windows ストア アプリで一時停止イベント、再開イベント、バックグラウンド イベントをトリガーする方法 (デバッグ時)
その他の関連するロック画面のガイダンス