Android Building Blocks
Androidアプリケーションは様々な種類のコンポーネントの集合体と捉えることが出来ます。これらのコンポーネントはほとんどの場合疎結合で、単一のガチガチに固まったアプリケーションではなくコンポーネント群と見なせる程度のものになっています。[※1]
一般にこれらのコンポーネントは同じシステムプロセス内で動作します。プロセス内で複数のスレッドを作ることは可能(そして、一般的)であり、また必要であれば完全に分離された子プロセスを作成することも可能ですが、Androidはアプリケーション開発者がプロセスを意識する必要が無いよう練られているため、これらを気にする必要はほとんどありません。
以下はAndroid APIにおいて最も重要なものです。
- AndroidManifest.xmlファイル
- AndroidManifest.xmlファイルは作成したトップレベルコンポーネント(特に、アクティビティ、サービス、インテント、下記に示すContent Provider)に対して、システムがどのようなことをすべきかを記述するコントロールファイルです。例えば、アクティビティとその受け取るべきインテントをくっつける、のりのようなものです。
- Activities
- アクティビティは、ライフサイクルを持つオブジェクトであり、何らかの動作を行うコードの塊です。必要であれば、UIをユーザに表示したり出来ます(アクティビティによっては、全くUIを表示しない場合もあります)。通常は、あるアクティビティをアプリケーションのエントリポイントとして指定します。
- Views
- ビューは、画面への描画のためのオブジェクトです。Androidユーザインターフェイスはビューのツリーによって構成されています。独自のグラフィカルテクニック(ゲームや、新たな変わったユーザインターフェイスウィジェットなど)を使いたい場合は、ビューを作成することになります。
- Intents
- インテントは、何かを行うよう”要求”[※2] を行うシンプルなメッセージオブジェクトです。例えば、アプリケーションでWebページを表示したい場合、アプリケーション内でURLを閲覧するためのインテントインスタンスを作成し、システムに対して投げます。するとシステムは渡されたインテントの処理方法を知っているコードを探し、実行します。またインテントは、システム全体に対して興味深いイベント(例えば通知)[※3] を飛ばすことにも利用出来ます(訳注:例えば、再起動のインテントによりアプリケーションのシャットダウンを行うイメージ)。
- Services
- サービスはバックグラウンドで動作するコード本体です。必要に応じて単独プロセスとして、あるいは他のアプリケーションプロセス内で動作させることが出来ます。他のコンポーネントは、サービスに”バインド”し、リモートプロシージャコール(RPC)を発行することでサービスにアクセス出来ます。サービスの例としてはメディアプレイヤーがあり、この場合ユーザがメディア選択UIから離れても、またはUIが終了してもなおプレイヤーのサービスはおそらく音楽を再生し続けようとするでしょう。
- Notifications
- 通知アイコンとは、ユーザが情報を得るために使われる、ステータスバーに表示される小さなアイコンです。最も良く知られている通知アイコンはSMSメッセージや、着信履歴、ボイスメールといったものですが、アプリケーションではそれぞれに独自のものを作成出来ます。通知アイコンは、ユーザの注意を惹きたい時に利用するメカニズムとして、強く推奨されるものです。
- ContentProviders
- Content Providerとは、デバイス上のデータにアクセスするためのデータ領域です。馴染み深いものとしては、ユーザの連絡先リストにアクセスするContent Providerがあります。自作アプリケーションは、他のアプリケーションがContent Provider経由で公開している情報にアクセス出来、また独自のデータを公開するためのContent Providerを定義することも出来ます。
- [※1]苦しい訳なので、時間をあけてもう一度見てみたほうがいい。
- [※2]intentionの解釈がおかしいかもしれない。
- [※3]notificationの解釈がおかしい。トレイアイコンの意味合いみたい。