Android アーキテクチャ
Android オペレーティング システムはソフトウェア コンポーネントのスタックであり、アーキテクチャ図では 5 つの部分と 4 つの主要な層に大まかに分割できます。
Linuxカーネル
すべてのレイヤーの最下位は Linux - Linux 3.6 で、約 115 のパッチが適用されます。プロセス管理、メモリ管理、デバイス管理 (カメラ、キーボード、モニターなど) などの基本的なシステム機能を提供します。同時に、カーネルはネットワーキングや多数のデバイス ドライバーなど、Linux が得意とするすべての作業を処理するため、多数の周辺ハードウェア インターフェイスとの互換性による不便さを回避できます。
図書館
Linux カーネル層の上には、オープンソース Web ブラウザ エンジン Webkit、よく知られている libc ライブラリ、ウェアハウス ストレージとアプリケーション データ共有用の SQLite データベース、オーディオとビデオの再生と記録用のライブラリなど、一連のライブラリのコレクションがあります。 、Web セキュリティ用の SSL ライブラリなど。
Androidライブラリ
このカテゴリには、Android 専用に開発された Java ベースのライブラリが含まれます。このカテゴリのライブラリの例には、ユーザー インターフェイスの構築、グラフィックスのレンダリング、データベース アクセスなどのアプリケーション フレームワーク ライブラリが含まれます。Android 開発者が利用できるいくつかの Android コア ライブラリを以下にまとめます。
- android.app - すべての Android アプリケーションの基礎であるアプリケーション モデルへのアクセスを提供します。
- android.content - コンテンツへのアクセス、公開、アプリケーションとアプリケーション コンポーネント間のメッセージングを容易にします。
- android.database - SQLite データベース管理クラスなど、コンテンツ プロバイダーによって公開されたデータにアクセスするために使用されます。
- android.opengl - OpenGL ES 3D 画像レンダリング API への Java インターフェイス。
- android.os - アプリケーションがメッセージング、システム サービス、プロセス間通信などのマークされたオペレーティング システム サービスにアクセスできるようにします。
- android.text - デバイスのディスプレイ上でテキストをレンダリングおよび操作します。
- android.view - アプリケーションのユーザー インターフェイスの基本的な構成要素。
- android.widget - ボタン、ラベル、リスト、レイアウト マネージャー、ラジオ ボタンなどを含む、事前に構築されたユーザー インターフェイス コンポーネントの豊富なコレクション。
- android.webkit - アプリケーションの組み込み Web ブラウジング機能を可能にするクラスのコレクション。
Android ランタイム層のコア Java ベース ライブラリについて見てきたので、次は Android ソフトウェア スタックの C/C++ ベースのライブラリについて見ていきます。
Android ランタイム
これはアーキテクチャの 3 番目の部分、下から 2 番目の層です。このセクションでは、Dalvik 仮想マシンと呼ばれる主要なコンポーネントについて説明します。これは Java 仮想マシンに似ていますが、Android 用に設計および最適化されています。
Dalvik 仮想マシンを使用すると、メモリ管理やマルチスレッドなどのコア Linux 機能を Java で使用できるようになります。Dalvik 仮想マシンは、各 Android アプリケーションを独自の独立した仮想マシン プロセスで実行します。
Android ランタイムは、Android アプリケーション開発者が標準 Java 言語を使用して Android アプリケーションを作成するための一連のコア ライブラリも提供します。
アプリケーションフレームワーク
アプリケーション フレームワーク層は、Java クラスの形式でアプリケーションに多くの高レベルのサービスを提供します。アプリケーション開発者は、アプリケーションでこれらのサービスを使用できます。
- アクティビティ マネージャー - アプリケーションのライフサイクルとアクティビティ スタックのあらゆる側面を制御します。
- コンテンツ プロバイダー - アプリケーション間でデータを公開および共有できるようにします。
- リソース マネージャー - 文字列、カラー設定、ユーザー インターフェイス レイアウトなど、コードが埋め込まれていないリソースへのアクセスを提供します。
- 通知マネージャー - アプリケーションがユーザーにダイアログまたは通知を表示できるようにします。
- ビュー システム - アプリケーション ユーザー インターフェイスの作成に使用される拡張可能なビューのコレクション。
応用
すべての Android アプリケーションは最上層に配置されます。作成したアプリケーションもこの層にインストールされます。これらのアプリケーションには、連絡先、ブラウザ、ゲームなどが含まれます。
Android アプリケーションのコンポーネント
アプリケーション コンポーネントは、Android アプリケーションの基本的な構成要素です。これらのコンポーネントは、アプリケーション マニフェスト ファイルによって疎結合されて編成されています。AndroidManifest.xml には、アプリケーションの各コンポーネントとそれらの相互作用方法が記述されています。
Android アプリケーションで使用できる 4 つの主なコンポーネントは次のとおりです。
コンポーネント | 説明する |
---|---|
活動内容 | UI を記述し、マシン画面とのユーザー対話を処理します。 |
サービス | アプリケーションに関連付けられたバックグラウンド操作を処理します。 |
ブロードキャスト受信機 | Android OSとアプリケーション間の通信を処理します。 |
コンテンツプロバイダー | データおよびデータベース管理の問題を処理します。 |
活動内容
アクティビティは、ユーザー インターフェイスを備えた単一の画面を識別します。たとえば、メール アプリケーションには、新着メールのリストを表示する 1 つのアクティビティ、メールを作成するための別のアクティビティ、およびメールを読むための別のアクティビティを含めることができます。アプリケーションに複数のアクティビティがある場合、そのうちの 1 つがアプリケーションの起動時に表示されるようにマークされます。
アクティビティは、次のように、 Activityクラスのサブクラスです。
public class MainActivity extends Activity {
}
サービス
サービスは、バックグラウンドで実行され、長時間実行される操作を実行するコンポーネントです。たとえば、サービスは、ユーザーが別のプログラムを使用しているときにバックグラウンドで音楽を再生したり、アクティビティ中にユーザーの対話をブロックせずにネットワーク経由でデータを取得したりすることができます。
次のように、サービスはServiceクラスのサブクラスです。
public class MyService extends Service {
}
ブロードキャスト受信機
ブロードキャスト レシーバーは、他のアプリケーションまたはシステムからのブロードキャスト メッセージに応答するだけです。たとえば、アプリはブロードキャストを開始して、一部のデータがデバイスにダウンロードされ、使用できることを他のアプリに知らせることができます。したがって、ブロードキャスト受信機はこれらの通信を傍受し、適切なアクションを実行します。
ブロードキャスト レシーバーはBroadcastReceiverクラスのサブクラスであり、各メッセージはIntentオブジェクトの形式でブロードキャストされます。
public class MyReceiver extends BroadcastReceiver {
}
コンテンツプロバイダー
コンテンツ プロバイダー コンポーネントは、リクエストに応じて、あるアプリケーションから別のアプリケーションにデータを提供します。これらのリクエストは、 ContentResolverクラスのメソッドによって処理されます。これらのデータは、ファイル システム、データベース、またはその他の場所に保存できます。
コンテンツ プロバイダーはContentProviderクラスのサブクラスであり、他のアプリケーションがトランザクションを実行するための API の標準セットを実装します。
public class MyContentProvider extends ContentProvider {
}
これらのタグの詳細については、別の章でアプリケーション コンポーネントについて説明します。
付属部品
前述のエンティティの構築、エンティティ間のロジック、エンティティ間の接続には追加のコンポーネントがあります。これらのコンポーネントは次のとおりです。
コンポーネント | 説明する |
---|---|
断片 | アクティビティ内の動作またはユーザー インターフェイスの一部を表します。 |
ビュー | ボタンやリストなど、画面上に描画される UI 要素。 |
レイアウト | 画面形式を制御し、ビューの外観を表示する View の継承。 |
インテント | コンポーネント間のメッセージ配線。 |
リソース | 文字列リソース、定数リソース、画像リソースなどの外部要素。 |
マニフェスト | アプリケーション構成ファイル。 |