Androidの4大コンポーネントのメリット・デメリット
Androidの主要な4つのコンポーネントは、それぞれに長所と短所のあるアクティビティ、サービス、ブロードキャストレシーバー、コンテンツプロバイダーです。
- アクティビティ:
利点:
- ユーザーとのインタラクションに対応するユーザーインターフェースを提供します。
- アクティビティ間の画面遷移とデータの受け渡しを行うこと。
- ライフサイクル管理で、さまざまなライフサイクルコールバックメソッドに対応できます。
欠点:
- Activityの生成と破棄にシステムリソースが多大に消費されます。
- アクティビティが増えるとメモリを多く消費し、アプリのパフォーマンスに影響が出る可能性があります。
- 画面回転などの設定変更でActivityが破棄・再作成される場合に、データの保存と復元処理が必要となる。
- サービス
利点:
- ユーザーインターフェースに影響を与えずに長時間の作業をバックグラウンドで実行可能
- アクティビティと通信し、プロセスの間でデータをやり取りします。
- 呼び出しは起動とバインディングの2通りの方法で行うことができる。
デメリット
- サービスはメインスレッドで実行されており、デフォルトではスレッドが1つだけで複数のタスクを同時に処理することができません。
- サービスをコントロールして、手動で停止または破棄する必要があります。
- ブロードキャストレシーバー
利点:
- システムブロードキャストとカスタムブロードキャストを受信し、異なるコンポーネント間の通信を実現する
- バックグラウンドで特定のイベントを監視し、それに応じた操作をトリガーできます。
欠点:
- BroadcastReceiverの処理ロジックは比較的に簡単で、時間のかかる処理は行えません。
- 受信したら迅速に処理し、他の受信機の妨げにならないようにする。
- コンテンツプロバイダー
利点:
- データ共有とアプリケーション間データアクセス機能も提供できる
- データを集約的に管理し、アクセス制御を行うことができます。
欠点:
- 複雑なURIマッチングルールやSQL文を記述する必要があり、実装負担が高まる。
- ContentProviderでデータにアクセスするには、関連する問い合わせ文と操作方法を理解する必要があります。