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

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

目次

  1. サービスを起動する
  2. ペンディングインテントを利用する
  3. アラームマネージャを利用する
  4. 繰り返し処理を行うプログラム
  5. さいごに

サービスを起動する

Androidの画面はアクティビティで構成されます。
今まで私たちはアクティビティを作成することでアプリの作成をしてきました。
これに対し画面を持たないプログラムを作ることもできます。
このようなプログラムをサービス(service)といいます。
アプリ画面を終了しても処理を続けたい場合や、ほかのアクティビティを表示しながら処理を行いたい場合は、サービスを利用します。
また、サービスの起動はアクティビティの起動と同様です。
サービスの起動はstartActivity()メソッドの代わりにstartService()メソッドを使います。

また、サービスの起動にはAndroidManifest.xmlに記述が必要です。
例えばServiceManager.javaにサービスプログラムを記述するのであれば要素を使って以下のように登録します。

ペンディングインテントを利用する

サービスは画面を待たなくても起動します。
そこでサービスを扱うにあたり、インテントを任意のタイミングで起動するという方法が重要になってきます。
この時、ペンディングインテント(PendingIntent)クラスが使われます。
そのためには、これまでと同様にインテントを作成したうえで、ペンディングインテントに渡す形をとることになります。

つまりペンディングインテントはタイミングを変えてインテントを発行する場合に使われます。

アラームマネージャを利用する

後でインテントを起動するために使われるのが、アラームマネージャ(AlarmManager)です。
アラームマネージャは一定時間後にインテントを発行したり、発行を繰り返すことができます。
アラームマネージャはAndroid自体で管理されているので、インテントを作成した画面がなくてもインテント(ペンディングインテント)が発行されることになります。
AlarmManager.RTC_WAKEUPを使用すると指定した時刻からの経過時間でアラームの起動ができます。
下のコードでは現在から10ミリ秒後にアラームが起動するように設定しています。
アラームマネージャの管理を停止する場合にはcancelメソッドを使います。

繰り返し処理を行うプログラム

さて、今まで学習した知識を利用して繰り返し処理を行うサービスを作成しましょう。
サービスと連携するために、AndroidManifest.xmlの登録が必要です。
下記の通りにサービスを登録して、プログラムを実行してください。

実行結果は以下のようになります。

さいごに

今回はコードがちょっと長いので、解説は次回にしたいと思います。

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