Androidでは、「
常時動いているプログラム」というのを作ることができます。まぁ、アニメーションのように常に動いて見えるというものもそうですけど、「起動したつもりはないのに、気がつくと動いている」というものもよくありますね。例えば、時計や天気予報のウィジェット。いつもちゃんと現在の時刻や天気を表示してくれます。自分で何かを実行したわけではないのに、ちゃんとプログラムは知らないところで動いているのです。
これは、「
サービス」と呼ばれるプログラムを利用しているのです。
サービスは、バックグラウンドで動作する、
GUIを持たないプログラムです。常に見えないところで動いているため、ユーザーにはそれが動いていることなどわかりません。が、見えないけれどちゃんと動いているのです。
この
サービスは、システムに用意されているものだけでなく、自分で作ることもできます。一般的なアプリなどの中からサービスを起動して利用することも可能です。ただし、サービスはGUIを持たず、必要な処理だけを常時起動しながら実行するものなので、何らかの形でそのサービスを呼出たり、そこから必要な結果などを受け取るなどのやり取りをしていかなければいけません。そのための方法もあわせて理解しておく必要があるでしょう。
サービスを利用するためには、いくつかのクラスが必要となります。まずはそれらについて整理しておきましょう。
※サービス側
○サービス本体これは、android.appパッケージの「
Service」クラスとして用意されています。このクラスを継承してサービス本体を作成します。
○Binderクラスこれは、外部からサービスを利用しようとしたときに用いられるもので、サービス本体とのバインド(関連付け)を管理するためのものです。Binderクラスを継承して作成します。
※アプリ側
○ServiceConnectionクラスサービスとの接続を行うためのインターフェイスです。これをimplementsしたクラスを用意し、その中でサービスとの接続や解除などの処理を行ないます。
○BroadcastReceiverクラスこれは「
ブロードキャスト」を受診するレシーバーです。ブロードキャストというのはサービスが何らかの要求を発信するもので、このレシーバークラスにより、特定のサービスがブロードキャストしたものを受信し、処理させることができます。
○IntentFilterクラスこれは、インテントのフィルタリングを行うためのものです。これにより、特定のサービスの特定のアクション(何かを実行する動作)についてレシーバーで受信するようにできます。
※両者の仲介
○Intentクラス「インテント」は既に登場したのでおなじみですね。プログラムを実行するための要求を行うものです。アプリからサービスを起動したり、サービスからアプリに要求を送るブロードキャストを実行するときなどに用意します。
――ざっと以上のようなクラス類を用意し、それらを手順に従って作成し組み込んでいくことで、サービスを利用することが出来るようになります。