blog

Android SDKを分解する:Androidコンポーネントの説明

この一連のチュートリアルでは、アプリケーションを作成するために必要なAndroid開発の基本的な機能について学んできました。これまで、ユーザーインターフェイス要素やデータストレージなど、Android...

Jul 6, 2025 · 6 min. read
シェア

はじめに

Androidアプリケーションには、Activity、Service、Content Provider、Broadcast Receiverの4つの主要コンポーネントがあり、これらのいずれかを作成または使用するときは、対応する要素をプロジェクトリストに追加する必要があります。アクティビティについてはすでに説明したので、今日の記事ではこれ以上時間を無駄にしません。それでは、他の3つの主要なアプリケーションコンポーネントに注目してみましょう。フラグメントやアクションバーなど、アプリケーションで使用する可能性の高い他のリソースについても説明します。

Service

Androidでは、Serviceはバックグラウンドプロセスに相当し、進行中のプロセスや長時間継続する必要があるプロセスによく使われます。実際、Serviceはユーザーインターフェイスを持たないため、通常はActivityのように他のコンポーネントと組み合わせて効果を得る必要があります。典型的な例としては、ユーザーが操作している間にサービスを開始するアプリケーションのアクティビティがあります。ユーザーはアクティビティとのやりとりを続けることができますが、同時にサービスの動作は影響を受けません - なぜなら、サービスの実行は常にバックグラウンドで行われるからです。

ヒント:インターネットデータの取得などのバックグラウンド処理を行いたい場合、必ずしもServiceクラスを使用する必要はありません。アプリケーションの実際のニーズによっては、Activity内部のAsyncTaskクラスを使用した方が適切な場合があります。これにより、バックグラウンド処理をUIから完全に分離することができますが、ActivityはAsyncTaskから結果を受け取り、UIに更新することができます。

マニフェストに Service コンポーネントを追加するには、application 要素を以下の構文とその要素に置き換えます:

EclipseでServiceクラスを作成することができます。手順はActivityの導入と同じですが、今回はServiceがスーパークラスとして選択されます。ServiceとActivityコンポーネントの違いについてはすでに説明しましたが、この2つには重要な違いがいくつかあります。アクティビティでServiceを起動し、ユーザーがアクティビティから別のアプリケーションに移動しても、Serviceは実行され続けます。したがって、Serviceは、あなたが知っているActivityとはまったく異なるライフサイクルを持ち、アプリケーションを効果的に動作させるためには、このことを覚えておく必要があります。

他のアプリケーションコンポーネントはサービスにバインドし、サービスからのデータを要求および受信することができます。バインドされたサービスが実行中の場合、バインドされたコンポーネントがすべて停止すると、サービスは停止します。Serviceはアプリケーションのユーザーインターフェイスとは関係ありませんが、アクティビティと一緒に開始されたServiceは、アクティビティと同じスレッドで実行されます。ただし、多くの処理リソースを使用するサービスがある場合は、そのサービス用に別のスレッドを作成するのが最善です。Android Developer's Guideに記載されているServiceの詳細については、ここをクリックしてください。

Content Provider

もう一つのコンポーネントであるコンテンツ・プロバイダは、データセットの管理に使用されます。このデータセットは、アプリケーションだけに属することも、他のアプリケーションと共有することもでき、照会や変更が可能です。アプリケーションでデータを管理するためにコンテンツ・プロバイダを作成した場合、UIコンポーネントはコンテンツ・プロバイダを使用することができ、通常はコンテンツ・リゾルバ・クラスを使用してデータを操作します。他のアプリケーションによって使用される場合、コンテンツプロバイダーはデータベースなどの構造化されたデータセットと対話するための標準的なメソッドを使用してデータにアクセスします。

リレーショナル・データベースに詳しい方なら、Content Providerが使用するデータ・アクセス方法をよくご存知でしょう。データはContent Providerによって、行と列を含む一連のテーブルに表示され、行の各列には個別のデータ値が含まれます。その結果、Content Provider を通して返されるデータの処理は、データベースのクエリの結果の処理と非常によく似ています。

特別なコンテンツプロバイダを作成できる場合もありますが、初めてアプリケーションを開発する場合は、基本的に他の開発者やAndroidシステム自体が提供するコンテンツプロバイダを使用することになります。コンテンツプロバイダは、クライアントアプリケーションがコンテンツを使用するために必要な権限を定義します。アプリケーションでコンテンツ プロバイダを使用するには、マニフェストでアクセス許可を追加する必要があります。

ヒント:アプリケーションのために構造化されたデータ・ソースのセットが必要なだけなら、通常はコンテンツ・プロバイダを別に作成する必要はありません。コンテンツ・プロバイダを作成する必要があるのは、アプリケーションから別のアプリケーションに構造化データをコピーする場合か、検索フレームワークを使用する場合だけです。

Broadcast Receiver

Android は、アプリケーションが応答できるさまざまなブロードキャスト・メッセージを発信することができます。これらのブロードキャストを送信するアプリを開発することは可能ですが、少なくとも最初のアプリについては、既存のブロードキャストを聴くよりもその可能性はずっと低くなります。システム通知には、バッテリー残量、画面オフ、充電器がソケットに差し込まれているかどうかなど、デバイスのハードウェアに関するさまざまな情報が含まれます。

Androidからのブロードキャスト通知を受信するには、アプリケーションはBroadcast Receiverを使用する必要があります。典型的な例として、Battery Levelツールは、バッテリ残量が実際に変化したときに表示を更新します。この場合、ServiceクラスをBroadcast Receiverと組み合わせて使用することで、アプリケーションがバックグラウンドで常に通知を待ち受けるようにできます。

Androidはブロードキャスト通知をインテントと呼び、アクティビティを開始するために使用できます。システムで実行されるアクションとして、インテントはアクティビティが通知を開始または送信できるようにします。ブロードキャスト受信を使用するには、アプリケーションはマニフェストでそれを宣言する必要があります。また、受信を意図するアクションを示すインテント フィルタの代替セットもあります:

上記のコードで、アプリケーションのブロードキャストレシーバは「battery low」インテントを受信できるようになります。マニフェストでアクションを宣言することで、すべてのシステム通知を受信できるわけではないことに注意してください。場合によっては、JavaのBATTERY_CHANGEDアクションを使用するなど、通知を受信するために登録する必要があります。

その他のクラス

ご覧のように、Androidのコンポーネントは、もともと異なるアプリケーションが相互に作用する能力を提供するために設計されました。ブロードキャスト通知がシステム上のどのアプリケーションでも使用できるように、Androidは、アプリケーション内の様々な一般的なタスク(例えば、電話番号にダイヤルする)を支援するための他のアクションの範囲を提供します。同様に、他の開発者が提供する機能を使用して、スケジュールされたプロセスを迅速に実装し、コード開発を節約し、アプリのユニークな点に集中することができます。インテントが起動すると、起動したインテントがアプリケーションの一部でなくても、起動したアクティビティに結果を返すように設定できます。これにより、要求された操作が完了した後も、アプリケーションを実行し続けることができます。

その他の注目すべきAndroidコンポーネントには、フラグメントとアクションバーがあります:

Fragment

アプリケーションの各画面のユーザーインターフェイスを定義するのに、単にアクティビティとレイアウト構成を使用するよりも、フラグメントを使用する方が効率的かもしれません。フラグメントの助けを借りて、UIを論理的な部分に分割し、アプリケーションの複数の画面にわたって同じ部分を再利用することもできます。フラグメントはAndroidのActivityの一部なので、各フラグメントはそれが存在するActivityのライフサイクルに適合する必要があります。

Action Bar

アクションバーもまた、アプリケーション開発中に頻繁に使用される重要なユーザーインターフェイス要素です。その役割は、Androidシステムの不可欠な部分として機能するのに十分なユーザーインターフェースをアプリケーションに提供することであり、プラットフォームのユーザーにとって最も馴染みのある要素になります。通常、アクションバーには、アプリケーション内のユーザーの位置や、アプリケーションのさまざまな部分間のナビゲーションシステムなどの項目が表示されます。アクティビティでアクションバーを使用するには、クラスに ActionBarActivity クラスが含まれていることを確認し、マニフェストでアクティビティに AppCompat テーマを適用する必要があります。

まとめ

Android のクラスとコンポーネントの正確な種類は、アプリケーションで実行するタスクによって異なります。しかし、この記事の議論は、クラスとコンポーネントの種類と数を理解し、あなたの状況に適した選択をするのに役立つはずです。特定の機能や特徴に対して、どのコンポーネントやクラスを使うかを決めるのは難しいことが多いので、自分の判断で、それらが何をするのかを明確に理解するようにしてください。次回のチュートリアルでは、Androidのサンプルコードとアプリケーションの公開方法について説明します。

Read next

ソニーはSmartWatch2ハッカソンを開催し、スマートウォッチのエコシステムを構築する

スマートウォッチは生活の一部\nウェアラブルデバイスは、最近の火災の概念であり、アイデアから現実と成功の商業化はあまりありませんが、スマートウォッチはアイテムの一つであり、スマートウォッチの分野でソニーは早くから始めて、2010年のLiveViewから現在のSmarまで、大きな力。

Jul 6, 2025 · 3 min read