BackgroundTaskとは

BackgroundTask

Windowsストアアプリは、基本的にアプリがバックグラウンドに回るとサスペンド状態に入ります。

正確にはOSがリソースが足りないと判断した時点でサスペンド状態にしますが実質、いつサスペンド状態に入るかはわかりません。

アプリにバックグラウンドに回っても処理を実行させたい場合、WindowsRuntimeではBackgroundTaskというものがあります。

1

 

アプリはあらかじめ決められたトリガーを指定してBackgroundTaskを登録します。

一度登録すると、アプリがバックグラウンドにまわろうがフォアグラウンドで動いていようがSystemが発行するトリガーに反応して処理を別プロセスで開始します。

Systemが発行するトリガーにはこのようなものがあります。

ロック画面の配置が必要であったり必要でなかったりとあるのは、CPUに負荷をかけやすいトリガーの場合、ロック画面に通知を配置する代わりにBackgroundTaskの個数制限を設けるためです。

ロック画面の配置が必要なトリガーは、ロック画面に配置する処理をしないと実行できません。

トリガー名 発生タイミング 頻度 ロック画面の配置
MaintenanceTrigger 最多15分間隔(電源に接続されている必要がある) 1回or繰り返し 必要なし
TimeTrigger 最多15分間隔(電源に接続されている必要なし) 1回or繰り返し 必要
SystemTrigger システムが発行するさまざまなトリガーに反応 1回or繰り返し 必要なし
LocationTrigger GPSが特定の場所を検知したとき 常に繰り返し 必要
PushNotificationTrigger プッシュ通知を受け取ったとき 常に繰り返し 必要
ControlChannelTrigger リアルタイム通信用 常に繰り返し 必要

 

これらのトリガーの中でも、SystemTriggerはさらに細かく分割されます。

システムトリガー名 トリガー発生タイミング ロック画面の必要性
InternetAvailable インターネット接続が確立させたとき
NetworkStateChange 接続の状態(LAN/Wifi/3G)などが変わったとき
UserAway ユーザーが4分間入力をしなかったとき 必要
UserPresent ユーザーが離席から復活したとき 必要
SessionConnected ユーザーがログインしたとき 必要
ControlChannelReset ネットワークの再確立が必要になったとき 必要

 

BackgroundTaskの登録までの流れはこのようになっています。

2

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください