- アクティビティ:画面操作
- サービス:バックグラウンド動作
- ブロードキャストレシーバ:システム監視
- コンテンツプロバイダ:データベース
(1)Activity アクティビティ
最も基本的な単位がアクティビティ。アクティビティ=活動という言葉の通り、ユーザが操作できる単位を「アクティビティ」と呼ぶ。典型的にはAndroidアプリの一画面が一つのアクティビティに対応する。iOSアプリで言えばViewControllerがActivityに対応すると言えるかもしれない。
アクティビティはユーザインターフェースと対応するため、画面から消えると一時停止(サスペンド)する。画面とは対応せずにバックグラウンドで動き続けるものは「Service=サービス」と呼ばれる。
(2)Service サービス
Service サービスは操作を必要とせずにバックグラウンドで動き続けて、長時間を要するオペレーションや、外部からの接続(=バインド)を通じて何らかの機能を提供する。外部からの接続に関してはパーミッションを設定することができる。
(3)Broadcast Receiver ブロードキャストレシーバ
システムなどからの何らかの通知(ブロードキャスト)を受信して処理を行い、すぐに終了するのが「ブロードキャストレシーバ」。これを通じて、例えばバッテリー残量が変化したり、電話をかけたりといったイベントを受信することができる。ブロードキャストされた通知(Intent インテントと呼ぶ)は複数のBroadcast Receiverによって処理されるのが大きな特徴。
上記3つとは少し違うけど、もう一つ。
(4)Content Provider コンテンツプロバイダ
別エントリでも書いたように、コンテンツプロバイダはアプリケーションがデータを保持し、またはこれを外部に対して公開することができる仕組み。たとえばデフォルトでは電話帳などがコンテンツプロバイダを公開しているので、サードパーティのアプリケーションはこれを利用して電話帳データを共有することができる。
上記のうち(1)(2)(3)はいずれもIntent インテントという同じ仕組みを通じて動作するので、起動のタイミングと起動後の振る舞い、つまり「Lifecycle ライフサイクル」のみが異なるということができる。アクティビティ、サービス、ブロードキャストレシーバといった「処理の単位」を適切かつ有機的に組み合わせることが良いAndroidアプリケーションの設計と言える。
0 件のコメント:
コメントを投稿