SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine(コードジン) DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

速習 Windowsストアアプリケーション

Windowsストアアプリのバックグラウンド処理

速習 Windowsストアアプリケーション 第9回

6.動作を確認する

 最後に動作を確認します。

 今回のトリガーに選んだTimeZoneChangeは、タイムゾーンの変更をトリガーとして実行されますので、OSのタイムゾーンを変更してください。

 タイムゾーンの変更は、タスクバーの右端の日時が書かれた部分をクリックして「日付と時刻の設定の変更」をクリックします。

タスクバーから日付と時刻を呼び出す
タスクバーから日付と時刻を呼び出す

 「日付と時刻」ウィンドウのタイムゾーンの変更ボタンから現在のタイムゾーン以外のタイムゾーンを選ぶと、バックグラウンドタスクが実行されます。

 サンプルのストアアプリを一度終了して再起動すると、ローカルストレージに保存されたバックグラウンドタスクの実行結果を呼び出して表示します。

注意

 動作確認後は、変更したタイムゾーンを元(日本の場合「(UTC+09:00)大阪、札幌、東京」)に戻しておくことを忘れずに!!

バックグラウンドでのオーディオ再生

 音楽プレイヤーなどのストアアプリで、ストアアプリがバックグラウンドに回っても音楽は再生を続けたい場合があります。その場合はバックグラウンドでのオーディオ再生が可能です。

 バックグラウンドでのオーディオ再生については、「バックグラウンドでオーディオを再生する方法」のドキュメントを参照ください。

バックグラウンドダウンロード

 ストアアプリが何らかのファイルをWebからダウンロードしている際、ストアアプリがバックグラウンドに回ってしまい、ダウンロードが終了するのを回避したいこともあるでしょう。そんなときは、バックグラウンドダウンロードを利用しましょう。

 バックグラウンドダウンロードを利用すると、ダウンロードの途中でストアアプリがバックグラウンドに回ってもダウンロードを継続できます。

 バックグラウンドダウンロードについては、「バックグラウンドでのデータの転送」のドキュメントを参照ください。

バックグラウンドからの通知操作

 前回説明したトースト、タイルの定期的な更新などもバックグラウンドの処理に入ります。

 バックグラウンドタスクのタイマートリガーなどでトースト、タイルの更新を呼び出すこともできますが、トースト、タイルに用意されたAPIを利用したバックグラウンド処理の方が以下の点で便利です。

  • 記述が簡潔である
  • マニフェストファイルの宣言が不要

 ただし、トースト、タイルに用意されたAPIはそれだけしかできませんので、他の処理を組み合わせたい場合には向いていません。

バックグラウンド処理の動作を確認する

 バックグラウンドタスクのデバッグはトリガーによる呼び出し以外にも、デバッグ中にVisual Studioから直接呼び出すことも可能です。

 ストアアプリのデバッグ実行中に「中断」と表示されたメニューをプルダウンすると、バックグラウンドタスク名が表示されます。

Visual Studioからバックグラウンドタスクを呼び出す
Visual Studioからバックグラウンドタスクを呼び出す

 中断表示がない場合は、「表示」→「ツールバー」→「デバッグの場所」で表示することができます。

 またバックグラウンドタスクが正常に呼び出されていないのか、それとも処理の中で例外などで処理が落ちてしまっているか判別したいときは、デバック中であればブレークポイントを利用することも可能です。

 バックグラウンドタスクが正常に動作しない場合の確認については、「バックグラウンドタスクをデバッグする方法」のドキュメントを参照してください。

バックグラウンドタスクの管理

 最後に、バックグラウンドタスクの状態を管理する方法を紹介します。

登録されているバックグラウンドタスクを取得する

 登録されているバックグラウンドタスクは、以下のコードで取得できます。

タイルのローカル更新
foreach (var task in BackgroundTaskRegistration.AllTasks)
{
    // それぞれのタスクに対する処理
}

バックグラウンドタスクのキャンセルを取得する

 処理中にキャンセルされた場合、以下のようにイベントハンドラーで取得できます。

タイルのローカル更新
taskInstance.Canceled += new BackgroundTaskCanceledEventHandler(OnCanceled);

 taskInstanceは、バックグラウンド処理のRunメソッドで渡される引数です。

まとめ

 制限されたリソースの中とはいえ、ストアアプリのバックグラウンド処理ではさまざまなことが実行できます。

 ロック画面対応や、AC電源の有無など知っておくポイントもいろいろありますので、ぜひ、バックグラウンドタスクをしっかり学んでうまく利用してください。

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
速習 Windowsストアアプリケーション連載記事一覧

もっと読む

この記事の著者

西村 誠(ニシムラ マコト)

 Microsoft MVP Windows Platform Development。 Flash、PHPの開発経験もあり国産ECサイト構築フレームワーク「EC-CUBE」の公式エバンジェリストでもある。 ブログ:眠るシーラカンスと水底のプログラマー 著書:基礎から学ぶ Windowsストアアプリ開発

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/7329 2013/08/30 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー