Androidのアクティビティ、ビュー、ウィンドウの関係を詳しく解説

 Androidシステムの起動

1、「Android システムの起動プロセスの概要」

2、「Android init process起動処理」

3.「Android zygoteプロセス起動処理」

4.「Android SystemServerプロセス起動処理」

5.「Androidランチャー起動処理」

6.「Androidアクティビティ起動処理の詳細説明」

Androidシステム開発の準備

1、「Android ソースコードのダウンロードとコンパイル」

2.「Android 11のソースコードのコンパイルとpixel3のフラッシュ」

3.「Android フレームワーク コード IDE のロードとデバッグ」

Androidシステム開発実習

1.「Androidのデフォルト入力方法設定」

2、「Android フレームワークのプレハブ APK アプリケーション」

3.「Androidシステムレベルでのアプリ起動制限について詳しく解説」

4.「Android はフレームワーク モジュールを個別にコンパイルしてプッシュします」

5.「Androidフレームワーク開発システムの問題点分析」

Android システム開発のコアナレッジリザーブ記事

1、「Android コンパイル システム - envsetup とランチ コードの記事」

2.「Androidコンパイルシステム - コンセプト」

3.「Androidログシステムの詳しい解説」

4.「Androidシステムハンドラの詳細説明」

5.「Androidシステムバインダーの詳細説明」

6.「Androidのアクティビティ、ビュー、ウィンドウの関係を詳しく解説」

7.「Android View描画処理の詳細説明」

8.「Android リーディングシステム属性の詳細説明」

9.「Androidのウィンドウ管理の仕組みを詳しく解説」

10.「Androidシステムを初めて知る」

11.「Zygoteプロセスの新規プロセスフォークを通知するAndroidにおけるAMSプロセスの通信方法」

Androidのコア機能を詳しく解説

1.「Android アプリケーション マーケットをクリックして APK インストールの詳細をダウンロード」

2、「Android ジェスチャー ナビゲーション (下から上にスワイプしてマルチタスク ページに入る)」

3.「Android ジェスチャ分析 (アプリケーション インターフェイスを左から右にスワイプしてアプリケーションを終了します)」

4.「Androidアプリのインストール手順を詳しく解説」

5、「android11 インストールアプリケーションがデスクトップアイコンの更新プロセスをトリガーする」

6.「最近のAndroidシステムのマルチタスクについて詳しく解説」

7.「Android システム ナビゲーション バー ビューの分析」

———————————————————————————————————————————

目次

1. 背景の紹介

1.1 活動

1.2 ウィンドウ

1.3 ビュー

2 番目に、関係の説明

2.1 アクティビティとウィンドウ

2.2 ウィンドウとビュー

2.3 ウィンドウとビュー

2.4 アクティビティ、PhoneWindow、DecorView の関係


1. 背景の紹介

Window、Activity、View はよく使われますが、この 3 つの関係がまだ体系的に明確になっていないので、今日はこの 3 つの関係を整理してみます。

        Window: 最上位のウィンドウの外観および動作ポリシーの抽象基本クラス。唯一の実装は PhoneWindow クラスです。

        アクティビティ: 4 つの主要コンポーネントの 1 つで、ユーザーがクリックしてスライドするためのインターフェイスを提供します。

        ビュー: ユーザー インターフェイス コンポーネント、UI コンポーネントの基本的な構成要素を表します。

1.1 活動

        アクティビティはビューの制御を担当せず、ライフサイクルを制御し、イベントを処理するだけです。実際にビューを制御するのはウィンドウです。アクティビティにはウィンドウが含まれており、ウィンドウは実際にウィンドウを表します。アクティビティは人間とコンピューターの対話インターフェイスのようなもので、ビューの追加と表示を調整し、他のコールバック メソッドを通じて Window や View と対話します。

1.2 ウィンドウ

        Windowの理解はより抽象的であり、Window多くを「保持」するコンテナに相当しView、これらはViewツリー構造で編成されます。

        Window は抽象クラスであり、実際に Activity に保持されるのはそのサブクラスの PhoneWindow です。PhoneWindow には内部クラス DecorView があり、DecorView を作成して、Activity に設定された R.layout.activity をロードします。Window はビューのキャリアであり、内部に DecorView を保持します。この DecorView はビューのルート レイアウトです。
Window は、WindowManager を通じて DecorView をロードし、ビューの描画やその他の対話のために DecorView を ViewRoot に渡します。

1.3 ビュー

        AndroidシステムではViewはツリー構造で管理されており、Viewのツリー構造は以下のようになります。

        このうち、DecorView は FrameLayout のサブクラスであり、Android ビュー ツリーのルート ノード ビューとみなすことができます。

        DecorView はトップレベルの View として使用されます。通常、これには垂直の LinearLayout が含まれます。LinearLayout には 3 つの部分があります。上記は遅延読み込みビューである ViewStub です (テーマの設定に従って、ActionBar に設定する必要があります) )、中央のものはタイトル バー (テーマ設定によると、一部のレイアウトにはタイトル バーがありません)、およびその下のコンテンツ バーです。

2 番目に、関係の説明

2.1 アクティビティとウィンドウ

        Activity インスタンスが作成されるたびに、Activity.attach() が呼び出され、一部のコンテンツが初期化されます。Window オブジェクトは、アタッチで作成、初期化、割り当てられます。Attach() では、システムはアクティビティが属する Window オブジェクトを作成し、それにコールバック インターフェイスを設定します。Activity は Window の Callback インターフェイスを実装しているため、Window が外部の状態変化を受け取ると、Activity のメソッドをコールバックします。

2.2 ウィンドウとビュー

        Window と View の関係を理解する前に、ViewRoot (ViewRootImpl) が何であるかを知る必要があります。これは、WindowManager と DecorView の間のリンクです。

  • ViewRoot は ViewTree のマネージャーであり、ViewTree のルート ノードではありません。
  • 厳密に言えば、ViewTree のルート ノードは DecorView のみです。
  • ViewRoot は DecorView と PhoneWindow (Activity によって作成された Window インスタンス) を「結合」します。

2.3 ウィンドウとビュー

        View は Android におけるビューの表示方法ですが、View は単独で存在することはできず、Window という抽象概念に関連付けられる必要があるため、ビューがあるところには Window が存在します。

        最も一般的な方法は、Activity.onCreate() メソッドで setContentView() メソッドを呼び出し、指定されたレイアウト ファイルを渡すことです。Activity は特定の実装を Window に渡します。Window の具体的な実装は、PhoneWindow が setContentView 内に DecorView を作成し、DecorView が View ツリー全体のルート View となり、定式化されたレイアウト ファイルを DecorView の mContentParent に追加します。

2.4 アクティビティ、PhoneWindow、DecorView の関係

        アクティビティと PhoneWindow および DecorView の関係図、


 

おすすめ

転載: blog.csdn.net/allen_xu_2012_new/article/details/131109579