連載
» 2009年06月18日 00時00分 UPDATE

Androidで動く携帯Javaアプリ作成入門(7):常駐アプリが作成できるAndroidの“サービス”とは (1/3)

本連載で、SDKとEclipseを使ってAndroidの携帯端末で動くJavaアプリを作成し、Android Marketでの配布を目指しましょう

[緒方聡,株式会社イーフロー]

国内初Android端末発売、Marketも日本語サポート開始

 いよいよ今月か来月に、NTTドコモからAndroidケータイが発売されます(参考:ドコモ、HTC製Android端末を6〜7月発売へ)。

 それに合わせて5月28日から、Android Marketでも日本語のサポートを開始しました。これで国内のユーザー向けにAndroidアプリを発信する準備が整いました。

 残念ながら有料アプリの配信はまだですが、いずれ準備が整うはずですので、楽しみにして待ちましょう。

何かと便利なAndroidの“サービス”って何?

 さて、今回はAndroidのバッググラウンドでアプリを動作させたい場合などに使用する“サービス”について説明します。

 通常、AndroidのActivityはフォアグラウンドでなければ動作しません。連載第2回「Androidアプリ作成の基本“Activity”とは何か?」で、以下のように紹介しました。

 実は、Toastクラスは内部的に“サービス”を利用していて、呼び出し元のActivityが表示されていなくても、このような動作を実現していたのです。

サービスのライフサイクル

 Activityと同様に、サービスにもライフサイクルがあります。Activityのように複雑ではありませんが、Activityと同様に、要所要所でコールバックメソッドが呼び出されます。

Serviceの状態遷移

 図1はサービスの状態遷移図です。

図1 Serviceの状態遷移 図1 Serviceの状態遷移

 サービスは、Activityのように一時停止などがないため、ループはしません。いったん起動すると、ずっと実行中となるため、ライフサイクルの動作は簡単です。

 呼び出されるコールバックメソッドは、以下のとおりです。

コールバックメソッド 説明
onCreate サービスが起動したタイミングで呼び出される。同じサービスを複数回起動しても、すでにサービスが存在するため、このメソッドは呼び出されない
onStart サービスが開始されたタイミングで呼び出される。クライアントが複数にわたりサービスを起動した場合、このメソッドは複数回呼び出される
onDestroy サービスが終了するタイミングで呼び出される
表1 コールバックメソッド

 サービスの実行中は、サービスからクライアントに対しては、自由にIntentブロードキャストして、クライアント側で動作を行わせることができます。しかし、クライアントからサービスに対しては、「バインド」という仕組みを使用しなければ、サービス側の処理を動作させることができません。

 クライアントがサービスにバインドすると、サービス側では、以下のコールバックメソッドが呼び出されます。

コールバックメソッド 説明
onBind サービスが起動したタイミングで呼び出される。同じサービスを複数回起動しても、すでにサービスが存在するため、このメソッドは呼び出されない
onRebind サービスが開始されたタイミングで呼び出される。クライアントが複数にわたりサービスを起動した場合、このメソッドは複数回呼び出される
onUnbind クライアントがサービスからアンバインドして再度バインドした際に呼び出される
表2 バインドした際のコールバックメソッド

 次ページからは、キッチンタイマーのサンプルアプリケーションを紹介し、どのように“サービス”を使っているのかを解説していきます。

       1|2|3 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。