Android FrameWorkとは何ですか、紹介してください。

フレームワークとは

フレームワークとは中国語で「フレームワーク」を意味します。ソフトウェア開発では、通常、開発フレームワークを指します。システムのカーネル層の上にあり、トップレベルのアプリケーションにインターフェイスを提供します。開発者がトップレベルのアプリケーションを迅速に開発できるように設計されています。カーネルの動作メカニズム (通常、フレームワーク) はアプリケーションのメイン関数やその他の必要なコンポーネントを隠し、開発者は関数コードの実現だけに集中する必要があります。

Android フレームワーク

Android フレームワークは、トップレベル アプリケーションと C/C++ ライブラリの間に構築され、主にサーバー、クライアント、Linux ドライバーの 3 つの部分で構成されます。それらの主な内容を次の図に示します。

APKプログラムの実行プロセス

APK プログラムの実行プロセスは、次の図に大まかに示されています。

強調する必要があるのは、ActivityThread はクラスであり、インスタンスが配置されているスレッドは UI メイン スレッドであり、メイン メソッドは Android アプリケーションのエントリ ポイントである ActivityThread クラス内にあるということです。ActivityThread オブジェクトが作成される前に呼び出される prepareMainLooper() メソッドは Looper オブジェクトをインスタンス化し、Looper オブジェクトはメッセージ キューを作成します。looper メソッドを呼び出した後、UI スレッドはメッセージ ループ本体に入り、継続的に抽出して処理します。メッセージキューからのメッセージ。ActivityThread の実行プロセスは、Activity をアクティブに作成しませんが、リモート AmS からの IPC 呼び出しをリッスンする ApplicationThread Binder を作成し、Create Activity メッセージを受信したときにのみメイン アクティビティの作成を開始します。アクティビティを作成する具体的なプロセスは次のとおりです。

W クラスは、WmS から IPC 呼び出しを受信し、DectorView にメッセージを送信する役割を担う Binder クラスを継承していることに注意してください。DectorView がそれを処理しない場合は、それを PhoneWindow に渡します。PhoneWindow が処理しない場合は、 、アクティビティにそれを渡し続けます。アクティビティは、このメッセージを処理するためにハンドラーを渡します。

概要は次のとおりです。 Android アプリケーションは、操作の開始時に、ActivityThread、ApplicationThread、W の合計 3 つのスレッドを作成します。このうち、ActivityThread は、Looper をバインドすることでメッセージを継続的に抽出して処理する UI スレッドです。ApplicationThread と W は両方とも、リモート サーバーとの通信を担当する Binder クラスです。ApplicationThread は、メインの Activity の作成前に作成され、 AmS からのアクティビティ メッセージの作成を監視します。アクティビティが作成された後、W は、WmS によって送信されたメッセージをリッスンし、そのメッセージをアクティビティに渡す責任があります。

サービスターミナル

サーバー側の設計は、Android マシン上で実行される多くのトップレベル アプリケーションにグローバル サービスを提供することです。主に WmS と AmS で構成されます。WmS は主にウィンドウ関連のイベント (ユーザーの監視など) の監視と処理を担当します。クリックやジェスチャーなど)、AmS は主にアクティビティの管理(アクティビティの作成など)を担当します。ユーザーが Android マシン上でイベントをトリガーすると、サーバーはまずイベントを取得し、そのイベントが実行中のアプリケーションに属していることが判明した場合は、Binder メカニズムを使用して処理するためにアプリケーションに送信されます。

WmS は主に KeyQ クラスと InputDispatcherThread クラスの 2 つのクラスで構成されます。これら 2 つはそれぞれスレッドを作成し、KeyQ クラスはユーザー メッセージを QueueEvent メッセージ キューに継続的に格納する役割を担い、InputDispatcherThread はメッセージを QueueEvent から継続的に取り出して処理したり、対応するアプリケーションに配布したりする役割を担います。

Android Framework など、次のような多くのナレッジ ポイントがあります。

  1. アクティビティのライフ サイクル: Android アプリケーションのアクティビティの作成、破棄、一時停止、回復などの状態を管理し、アプリケーションがユーザーの操作に正しく応答できるようにします。
  2. フラグメント: 複数の UI コンポーネント レイアウトを 1 つのアクティビティに結合できるようにし、柔軟な UI レイアウトをサポートします。
  3. サービス: 音楽の再生や電子メールのチェックなど、長時間実行されるタスクや操作をバックグラウンドで実行できるようにします。
  4. BroadcastReceiver: システム ブロードキャストとカスタム ブロードキャストを監視し、ブロードキャスト メッセージの送信時の受信と処理を担当します。
  5. ContentProvider: アプリケーション内のデータを管理し、データ ストレージとアクセス サービスを提供し、複数のアプリケーション データの共有を実現します。
  6. 目的: アプリケーション間でメッセージとデータを渡し、アクティビティ、サービス、BroadcastReceiver などの他のアプリケーション コンポーネントを開始します。
  7. AndroidManifest.xml ファイル: アプリケーションの名前、バージョン、権限などを含む、アプリケーションの基本情報と構成が保存されます。
  8. R.java ファイル: レイアウト、文字列、画像など、アプリケーション内のリソース識別子にアクセスするために Android によって自動的に生成されるクラス。
  9. Rights Management: アプリがアクセスを許可されたデータとシステム機能にのみアクセスできるようにし、アプリによるデバイスの損傷や悪用を防ぎます。
  10. システム サービス: ネットワーク アクセス サービス、通知プロンプト サービス、ストレージ管理サービスなど、さまざまな共有システム レベルの機能とサービスを提供します。
  11. View および ViewGroup: Android の UI コントロールの基本単位であり、アプリケーション インターフェイスとユーザー インタラクションを構築するために使用されます。
  12. 状態の保存と復元: アプリケーションが一時停止または再開されるときに、アプリケーションの状態とデータを保存および復元します。
  13. リソース管理: 画像、レイアウト、文字列などのアプリケーション リソースを管理して、リソース ファイルを動的にロード、変更、アンロードできるようにします。
  14. イベント処理: タッチ スクリーン、キー イベントなどのさまざまなユーザー入力イベントを処理し、ユーザーの操作に応答します。
  15. マルチスレッド プログラミング: アプリケーションがマルチスレッドでタスクを実行できるようにし、ハードウェア リソースを最大限に活用し、アプリケーションのパフォーマンスと応答速度を向上させます。
  16. セキュリティ管理: アプリケーションが正常に実行できることを確認し、ユーザーのデータとデバイスを外部の脅威や攻撃から保護します。
  17. アニメーション: ユーザー エクスペリエンスと可視性を向上させ、アプリケーションをより生き生きとした魅力的なものにします。
  18. カスタム ビュー: アプリケーションの UI 機能を拡張して、複雑な UI 効果と流暢さを実現します。
  19. 通知とプッシュ: ユーザーに通知とプッシュ メッセージを提供して、アプリケーションに対するユーザーの注意力と使用エクスペリエンスを向上させます。
  20. デバッグとテスト: アプリケーションの安定性と正確性を確保し、アプリケーションの問題のリスクを軽減します。
  21. ……

Android フレームワーク フレームワークのナレッジ ポイントを誰もがよりよく理解できるように、参考となる大量の資料をここに示します。Android フレームワークのコア ナレッジ ポイント マニュアルが整理されており、ハンドラー、バインダー、AMS、WMS が記録されています。 、PMS、イベント配信の仕組み、UI描画…など、フレームワークに関するほぼすべての知識がこの本に収録されています。

「フレームワークコアナレッジポイント概要マニュアル」https://qr18.cn/AQpN4J

ハンドラー メカニズムの実装原理の一部:
1. マクロ理論分析とメッセージ ソース コード分析
2. MessageQueue ソース コード分析
3. ルーパー ソース コード分析
4. ハンドラー ソース コード分析
5. まとめ

Binder の原則:
1. Binder を学習する前に理解しておく必要がある知識ポイント
2. ServiceManager のバインダーの仕組み
3. システム サービスの登録プロセス
4. ServiceManager の起動プロセス
5. システム サービスの取得プロセス
6. Java Binder の初期化
7. Java システムの登録プロセスバインダーのサービス

受精卵:

  1. Androidシステムの起動処理とZygoteの起動処理
  2. アプリケーションプロセスの起動プロセス

AMS ソースコード分析:

  1. アクティビティのライフサイクル管理
  2. onActivityResult実行処理
  3. AMSのアクティビティスタック管理の詳細説明

詳細な PMS ソース コード:

1. PMSの起動プロセスと実行プロセス
2. APKのインストールとアンインストールのソースコード解析
3. PMSのインテントフィルタマッチング構造

WMS:
1. WMS の誕生
2. WMS の主要メンバーと Window の追加プロセス
3. Window の削除プロセス

「Androidフレームワーク学習マニュアル」:https://qr18.cn/AQpN4J

  1. ブート初期化プロセス
  2. 起動時に Zygote プロセスを開始する
  3. 起動時に SystemServer プロセスを開始する
  4. バインダードライバー
  5. AMSの起動プロセス
  6. PMSの起動プロセス
  7. ランチャーの起動プロセス
  8. Android の 4 つの主要コンポーネント
  9. Androidシステムサービス - 入力イベントの配信処理
  10. Android の基盤となるレンダリング画面更新メカニズムのソース コード分析
  11. Android のソースコード解析の実践

おすすめ

転載: blog.csdn.net/weixin_61845324/article/details/130071395
おすすめ