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