アンドロイドホットアップデートフレームワーク!330ページのPDF、100,000語の知識ポイントの要約、50Wの年俸

私たちプログラマーは、学ぶことが多すぎると混乱することがよくあり、私たちの中には方向性を見つけることができず、途方に暮れている人もいます。

多くのプログラマーは、私はもっと良くなりたいと喜んで言いますが、もっと良いのは漠然としていて、どうすればいいのかわかりません。私たちの人生はとても短いので、プログラマーとしてのキャリアはもっと短いかもしれません。ですから、勉強するためには、仕事、休憩、夕方、週末を最大限に活用する必要があります。次に、一流のインターネット企業の上級Androidアーキテクト向けにTencentClassroomが提供する学習プランを見てみましょう。

コンポーネント化

1.1コンポーネント化の本来の意図

  • APPバージョンの継続的な反復と新機能の継続的な増加により、ビジネスはますます複雑になり、メンテナンスコストが高くなります。
  • ビジネスの結合度が高く、コードがますます肥大化し、複数の人がチームの開発に協力することは困難です。
  • Androidプロジェクトのコードをコンパイルすると、コンピューターが非常に動かなくなり、単一のプロジェクトでコードが深刻に結合されるため、すべてのコード変更を再コンパイルしてパッケージ化し、テストする必要があります。これには非常に時間がかかります。
  • ユニットテストに便利で、影響を受ける他のモジュールに焦点を当てることなく、単一のビジネスモジュールを変更します。

1.2コンポーネント化とは

コンポーネント化とは、次の図に示すように、アプリを複数のモジュールに分割することです。各モジュールはコンポーネント(またはコンポーネントの依存関係の基本ライブラリ)です。開発プロセス中に、一部のコンポーネントを個別にデバッグできます。コンポーネントは必要ありません。相互に依存します。ただし、最終リリース時には、すべてのコンポーネントがlibの形式でメインアプリプロジェクトに依存し、apkにパッケージ化されているため、相互に呼び出すことができます。

1.3コンポーネント化の利点

  • コンポーネント化とは、共通のモジュールを分離し、それらを統一された方法で管理して、再利用を改善し、ページをより小さな詳細なコンポーネントに分割することです。コンポーネントには、UI実装に加えて、データレイヤーとロジックレイヤーも含まれます。
  • 各プロジェクトは個別にコンパイルでき、コンパイルを高速化し、個別にパッケージ化できます。
  • 各プロジェクト内の変更は、他のプロジェクトには影響しません。
  • ビジネスライブラリプロジェクトは、すばやく分割して他のアプリに統合できます。
  • 頻繁に繰り返されるビジネスモジュールはコンポーネントアプローチを採用しており、ビジネスラインの研究開発は相互に干渉せず、コラボレーションの効率を向上させ、製品の品質を制御し、安定性を強化します。
  • 並行開発では、チームメンバーは自分の小さなモジュールにのみ注意を払い、結合を減らし、後のメンテナンスを容易にします。

2コンポーネント化されたコミュニケーション

2.1コンポーネント化されたコミュニケーション

コンポーネント化は相互に直接依存していません。コンポーネントAがコンポーネントBのメソッドを呼び出したい場合、それは機能しません。多くの開発者は、コンポーネント間の複雑な通信のために、コンポーネント化の使用をあきらめています。

コンポーネント通信にはいくつかの方法があります。

####### 1。ローカル放送

LoacalBroadcastRecevierであるローカル放送。同じアプリケーション内の異なるシステムによって指定されたコンポーネントとの通信によく使用されます。送信されるブロードキャストは自分のAPPでのみブロードキャストされ、他のアプリにリークされることはなく、他のアプリはブロードキャストを送信できないという利点があります。自分のアプリ。、他のアプリに邪魔されることなく。ローカルブロードキャストは、インターホン通信のようなもので、低コストで高効率ですが、2つの通信メカニズムがすべて委託され、システムが責任を負うという欠点があります。送信のどの段階にも介入できず、制御できません。一般的に言えば、コンポーネントの割合は通信プロセスで使用されていません。高い。

2.プロセス間のAIDL

プロセス間のAIDL。この粒度はプロセスにあり、コンポーネント化された通信プロセスはスレッド内にあることがよくあります。さらに、AIDL通信もシステムレベルの通信です。最下層はバインダーメカニズムに基づいています。Androidには実装用のテンプレートが用意されていますが、多くの場合、ユーザーが理解するのが難しく、対話がより複雑になります。、コンポーネント化された通信プロセスには適用できないことがよくあります。

3.匿名のメモリ共有

匿名のメモリ共有。たとえば、Sharedpreferencesを使用すると、マルチスレッドシナリオでは、スレッドセーフでないことがよくあります。これは、コンポーネントの構成情報など、ほとんど変更を加えずに一部の情報を格納するためのものです。

4.インテントバンドルの配信

インテントバンドル配信。明示的および暗黙的な送信を含む。明示的な送信には明確なパッケージ名パスが必要です。コンポーネントとコンポーネントは相互に依存する必要があることがよくあります。これは、コンポーネント化におけるSOP(関心の分離の原則)から逸脱します。暗黙的な場合は、パッケージ名だけではありません。パスを繰り返すことはできず、一連のルールを定義する必要があり、パッケージ名のパスが1つだけ間違っているため、トラブルシューティングが少し面倒です。この方法は、コンポーネント間の内部送信に適していることが多く、他のパスを処理するための使用シナリオは多くありません。コンポーネントの外側のコンポーネント。

2.2現在の主流の慣行の1つは、図のベースモジュールなどのサードパーティを導入することです。

3ARouterコンポーネント通信フレームワーク

3.1ARouterの概要

ARouterは、AlibabaのオープンソースAndroidプラットフォームでページとサービスのルーティング機能を提供するミドルウェアです。シンプルで十分です。主にコンポーネント通信に使用されます

        Intent intent = new Intent(mContext, XxxActivity.class);
 intent.putExtra("key","value");
 startActivity(intent);
 
 Intent intent = new Intent(mContext, XxxActivity.class);
 intent.putExtra("key","value");
 startActivityForResult(intent, 666);

上記のコードは、Android開発で最も一般的で一般的に使用される機能はページジャンプです。ブラウザや他のアプリからアプリ内のページにジャンプする必要性に直面する必要がありますが、それが単純な場合でもページジャンプは、時間が経つにつれて、いくつかの問題も発生します。

  1. 一元化されたURL管理:一元化された管理に関しては、常に苦痛です。複数の人が共同で開発する場合、全員がAndroidManifest.xmlにアクセスしてさまざまなIntentFilterを定義し、暗黙のインテントを使用します。最後に、AndroidManifest.xmlがさまざまなものでいっぱいであることがわかります。 Schamesとさまざまなパスでは、パスのオーバーラップカバレッジ、エクスポートされる過度のアクティビティ、セキュリティリスクなどの問題を頻繁に解決する必要があります。

  2. 構成のしやすさ:マニフェストはxml形式に制限されており、作成が面倒で、構成が複雑で、カスタマイズできるものが少なくなっています。

  3. ジャンププロセス中に介入できない:Intentメソッドを直接ジャンプし、開発者はジャンププロセス中に介入できません。また、ログインやポイントの埋め込みなど、非常に一般的なロジックであるアスペクト指向のものの実装は困難です。各サブページで判断されます。結局のところ、アクティビティがインスタンス化されているのは非常に不合理です。

  4. クロスモジュールを明示的に依存させることはできません。アプリが小さい場合と大きい場合は、アプリを水平方向に分割し、ビジネスに応じて複数のサブモジュールに分割し、パッケージ化プロセスを通じてアプリの機能を完全に分離するため、便利です。大規模なアプリケーションを処理するために。チームは多くの人と協力し、お互いのロジックに干渉しません。現時点では、暗黙のインテントジャンプにしか依存できません。これは、作成が面倒で、成功するかどうかを制御するのが困難です。 。

上記の問題を解決するには、分離可能で、シンプルで、多機能で、高度にカスタマイズ可能で、傍受ロジックをサポートするルーティングコンポーネントが必要です。AlibabaのARouterを選択し、怠惰で、ARouterの中国語の紹介ドキュメントを直接貼り付けます。

3.2ARouterの利点

ARouterGithubからその利点について学びます。

ジャンプする標準URLの直接解析をサポートし、ターゲットページにパラメーターを自動的に挿入します。マルチモジュールプロジェクトの使用をサポートします。複数のインターセプターの追加をサポートします。カスタムインターセプトシーケンスは依存性注入をサポートします。依存性注入として使用できます。フレームワーク。ソリューション)マッピング関係は、グループ、マルチレベル管理、オンデマンド初期化、グローバルダウングレードおよび部分ダウングレード戦略ページを指定するユーザーのサポートによって分類され、インターセプター、サービス、およびその他のコンポーネントがフレームワークに自動的に登録されます。複数をサポート遷移アニメーションを構成する方法。フラグメントを取得するためのサポート。完全サポートKotlinおよび混合編集の一般的なアプリケーション:

外部URLから内部ページへのマッピング、パラメーターの受け渡しと解析、モジュール間のページジャンプ、モジュール間の分離によるジャンププロセスのインターセプト、ログインや埋め込みポイントなどの処理ロジック

クロスモジュールAPI呼び出し、制御の反転によるコンポーネントの分離

3つの典型的なアプリケーションシナリオ

  1. 外部URLから内部ページへのマッピング、およびパラメーターの受け渡しと解析
  2. モジュール間のページジャンプ、モジュール間のデカップリング
  3. ジャンププロセスをインターセプトし、ログイン、ポイントの埋め込みなどのロジックを処理します。
  4. クロスモジュールAPI呼び出し、モジュール間の分離(登録されたARouterサービスフォーム、インターフェイスを介して相互に呼び出す)

総括する

実際、簡単に習得するのは非常に簡単で、2つの主要なポイントがあります。

  1. 優れたビデオ資料のセットを見つけて、ダニエルが学習するために整理した知識フレームワークに従ってください。
  2. もっと練習しましょう。(ビデオの利点は、強い相互作用の感覚であり、集中しやすいです)

天才である必要も、強い才能を持っている必要もありません。この2つのポイントを実行する限り、短期的に成功する可能性は非常に高くなります。

多くのジュニアおよびミドルレベルのAndroidエンジニアにとって、スキルを向上させたい場合、彼らはしばしば自分で成長します。断片化されたシステムの学習効果は非効率的で、長く、無力です。以下の情報のスクリーンショットは、私が数か月にわたって編集したものであり、誠意に満ちています。これは、3〜5年の開発経験を持つAndroidプログラマーが学ぶのに特に適しています。

%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)】。**

[外部リンク画像が転送されています...(img-vxeFnpZh-1614248588298)]

おすすめ

転載: blog.csdn.net/a120464/article/details/114098195