本連載で、SDKとEclipseを使ってAndroidの携帯端末で動くJavaアプリを作成し、Android Marketでの配布を目指しましょう
いよいよ今月か来月に、NTTドコモからAndroidケータイが発売されます(参考:ドコモ、HTC製Android端末を6〜7月発売へ)。
それに合わせて5月28日から、Android Marketでも日本語のサポートを開始しました。これで国内のユーザー向けにAndroidアプリを発信する準備が整いました。
残念ながら有料アプリの配信はまだですが、いずれ準備が整うはずですので、楽しみにして待ちましょう。
さて、今回はAndroidのバッググラウンドでアプリを動作させたい場合などに使用する“サービス”について説明します。
通常、AndroidのActivityはフォアグラウンドでなければ動作しません。連載第2回「Androidアプリ作成の基本“Activity”とは何か?」で、以下のように紹介しました。
実は、Toastクラスは内部的に“サービス”を利用していて、呼び出し元のActivityが表示されていなくても、このような動作を実現していたのです。
Activityと同様に、サービスにもライフサイクルがあります。Activityのように複雑ではありませんが、Activityと同様に、要所要所でコールバックメソッドが呼び出されます。
図1はサービスの状態遷移図です。
サービスは、Activityのように一時停止などがないため、ループはしません。いったん起動すると、ずっと実行中となるため、ライフサイクルの動作は簡単です。
呼び出されるコールバックメソッドは、以下のとおりです。
コールバックメソッド | 説明 |
---|---|
onCreate | サービスが起動したタイミングで呼び出される。同じサービスを複数回起動しても、すでにサービスが存在するため、このメソッドは呼び出されない |
onStart | サービスが開始されたタイミングで呼び出される。クライアントが複数にわたりサービスを起動した場合、このメソッドは複数回呼び出される |
onDestroy | サービスが終了するタイミングで呼び出される |
表1 コールバックメソッド |
サービスの実行中は、サービスからクライアントに対しては、自由にIntentをブロードキャストして、クライアント側で動作を行わせることができます。しかし、クライアントからサービスに対しては、「バインド」という仕組みを使用しなければ、サービス側の処理を動作させることができません。
クライアントがサービスにバインドすると、サービス側では、以下のコールバックメソッドが呼び出されます。
コールバックメソッド | 説明 |
---|---|
onBind | サービスが起動したタイミングで呼び出される。同じサービスを複数回起動しても、すでにサービスが存在するため、このメソッドは呼び出されない |
onRebind | サービスが開始されたタイミングで呼び出される。クライアントが複数にわたりサービスを起動した場合、このメソッドは複数回呼び出される |
onUnbind | クライアントがサービスからアンバインドして再度バインドした際に呼び出される |
表2 バインドした際のコールバックメソッド |
次ページからは、キッチンタイマーのサンプルアプリケーションを紹介し、どのように“サービス”を使っているのかを解説していきます。
Copyright © ITmedia, Inc. All Rights Reserved.