Androidアプリの開発をしよう07 サービスとの連携(解説)

画面を持たないプログラム

目次

  1. 前回からの続き
  2. プログラムの解説
  3. 通知領域を利用する
  4. さいごに

前回からの続き

さて、前回は通知領域を利用したアプリの作成をして終わりました。
今回は、アプリの内容について解説していきたいと思います。

プログラムの解説

このプログラムはサービスを発行するインテントを作成し、

ペンディングインテントとして取得しています。

これをアラームマネージャによって発行しています。

繰り返し処理を行う部分はサービス側の setNextAlarmService()で行っています。

通知領域を利用する

さて、サービスを利用する場合は別のアプリやホーム画面でも処理を続けることが重要になってきます。
このため、ユーザが別の画面に移動した場合などに、サービスを停止する方法を用意しておく必要があります。
このようなときは通知領域(ノーティフィケーション)を使うと便利です。
通知領域は画面上部のステータスバーに存在し、引き出して起動することができます。
通知領域を利用するためには通知領域マネージャ(NotificationManager)を取得します。
通知領域を作成し、マネージャに設定して通知を開始します。

通知領域の表示はnotify()メソッドで、停止はcancel()メソッドで行います。
必要なタイミングでこれらもメソッドを呼び出します。

さいごに

今回のアプリの繰り返しには、setNextAlarmService()メソッドを使用しています。
しかしながらアラームマネージャにはsetIRepeating()メソッドやsetInexactRepeating()メソッドがあり、いちいちsetNextAlarmService()メソッドを利用しなくても簡単に繰り返し処理ができるように見えます。
しかし、AndroidOSの特性によりsetIRepeating()メソッドやsetInexactRepeating()メソッドでは正確なタイミングでの繰り返しが難しくなっています。
これは、Androidの省電力化による影響でこれらのメソッドが正確に繰り返さなくなる弊害が出てしまいました。
もし、APIレベル19以下の実機をお持ちのかたやAPIレベルを19に下げたエミュレータを作成した方は、Repeating()メソッドを試してみてください。
きっと正確にプログラムが起動すると思います。
今回でインテントについての学習は終了です。
次回からはウィジェットについて学習していきたいと思います。

このサイトをフォローする!