Jetpackアプリケーションアーキテクチャガイド

0.まえがき

Androidは10年以上開発されており、比較的成熟した技術と言えます。当初はフレームワークが少なく、仕様もありませんでした。ネットワークリクエストやデータベース操作など、すべてのコードは自分で作成する必要があります。 、データ分析など。その後、XUtils、Volley、OKHttp、EventBusなど、開発者が迅速に開発するのに役立つフレームワークが登場しました。フレームワークが増えると、アプリケーションに複数のテクノロジオプションが含まれるようになり、アプリケーション開発が不規則になります。その結果、アプリケーションの品質が不均一になります。これは明らかにGoogleが望んでいることではありません。その後、GoogleはMVPとMVVMに関連する公式の例を発表しました。効果は非常に一般的で、対象範囲はアーキテクチャのみです。GooleI/ O2018カンファレンスで発表されたAndroidJetpackは、上記の問題を解決することが期待されています。

Android Jetpackの一部のコンポーネントは、初めて起動されません。その中で、LifeCycle、LiveData、ViewModel、Room、およびその他のコンポーネントは、Google I / O 2017カンファレンスの早い段階でAndroidアーキテクチャコンポーネント(AAC)とともに起動されました。GooleI/ O 2018カンファレンスでは、AndroidサポートライブラリがAndroidXに置き換えられ、AndroidJetpackがAndroidArchitectureComponentに基づいてリリースされました。AndroidXもAndroidJetpackに属しています。

Jetpackには次の特徴があります

  • 不整合の削減:これらのライブラリは、さまざまなAndroidバージョンおよびデバイス間で一貫した方法で機能し、複雑さを軽減するのに役立ちます。
  • ボイラープレートコードの排除:Jetpackは、面倒なアクティビティ(バックグラウンドタスク、ナビゲーション、ライフサイクルなど)を管理できるため、優れたアプリの作成に集中できます。
  • ベストプラクティスに従う:Android Jetpackコンポーネントは最新の設計方法で構築されており、下位互換性があり、クラッシュやメモリリークを減らすことができます

1.AndroidJetpackの分類

Android Jetpackは、アーキテクチャ、UI、Foundationy、Behaviorの4つの部分に分かれています。時間の経過とともに、AndroidチームはJetpackにさらに多くのコンポーネントを追加しました。最新のレイアウトは次のとおりです。

1-1。アーキテクチャアーキテクチャコンポーネント

Jetppackは、開発者が開発をスピードアップできるようにすることを目的としており、互換性などの些細な作業に多くの時間を費やすのではなく、自分のビジネスに集中できます。

アーキテクチャアーキテクチャコンポーネントモジュールには優れた互換性があり、アーキテクチャコンポーネントの各コンポーネントは、特定のタイプの問題/問題点に対処するのに役立ちます。

 

ライフサイクル

これにより、アクティビティ/フラグメントのライフサイクルの問題に簡単に対処し、ライフサイクルの変更をより分離した方法で処理し、メモリリークを簡単に回避できます。

LiveData

基になるデータベースが変更されたときにビューに通知します。オブザーバーモデルとライフサイクル認識に基づくデータ保持クラスは、データの分離と処理を改善するのに役立ちます。通常のオブザーバブルとは異なり、LiveDataはライフサイクルを認識します。

ViewModel

ライフサイクル方式で、通常はDataBindingと組み合わせてインターフェイス関連のデータを管理し、開発者がMVVMアーキテクチャを実装するための強力なサポートを提供します。

 

データバインディング 監視可能なデータをインターフェイス要素に宣言的にバインドします。通常はViewModelと組み合わせて使用​​されます

ルーム

SQLiteデータベースへのフレンドリーでスムーズなアクセス。SQLiteに基づく抽象化レイヤーを提供し、より強力なデータベースアクセスを可能にします

WorkManager

バックグラウンドタスクを実行するためのワンストップソリューションを提供する

ナビゲーション

単一のアクティビティアプリケーションをより便利に構築し、アプリ内ナビゲーションを処理するのに役立ちます

ページング

これは、開発者が一度に小さなデータをロードして表示し、オンデマンドで一部のデータをロードして、ネットワーク帯域幅とシステムリソースの使用を削減するのに役立ちます。

アーキテクチャコンポーネントを起動する際、AndroidはAndroidアプリケーションに適したアーキテクチャも推奨します。コンポーネントは次の図に示すように編成されています。

各コンポーネントはそれぞれの問題に注意を払い、相互に干渉しないため、アプリケーションはより分離され、明確な責任を負います。

各コンポーネントは、次のレベルのコンポーネントにのみ依存することに注意してください。たとえば、アクティビティとフラグメントはビューモデルにのみ依存します。ストレージ領域は、他の複数のクラスに依存する唯一のクラスです。この場合、ストレージ領域は永続データモデルとリモートバックエンドデータソースに依存します。

1-2。基礎(基本コンポーネント)

基本コンポーネントは、下位互換性、テスト、セキュリティ、Kotlin言語サポートなどの水平機能を提供し、次のコンポーネントライブラリが含まれています。

  • Android KTX:Kotlin用にJetpackおよびAndroidプラットフォームAPIを最適化するKotlin拡張機能のセットです。開発者がKotlinをAndroid開発に使用するのを、より簡潔で、より快適で、より慣用的な方法で支援します。
  • AppCompat:Android開発の下位バージョンと互換性のあるAppCompatで始まる一連のAPIを提供します。
  • Auto:Android Autoアプリケーションの開発を支援し、すべての車両に標準化されたインターフェースとユーザーインタラクションを提供するコンポーネントであり、開発者は車両固有のハードウェアの違い(画面解像度、ソフトウェアインターフェース、ノブ、タッチコントロールなど)について心配する必要はありません。 )。
  • ベンチマーク:AndroidStudioからKotlinまたはJavaベースのコードをすばやくベンチマークします。コードのパフォーマンスを測定し、ベンチマーク分析の結果をAndroidStudioコンソールに出力します。
  • Multidex(multi -dex処理):64Kを超えるメソッドを持つアプリケーションのmulti-dexファイルを有効にします。
  • セキュリティ:セキュリティのベストプラクティスに従って、暗号化されたファイルの読み取りと書き込みを行い、設定を共有します。
  • テスト:ユニットおよびランタイムインターフェイステスト用のAndroidテストフレームワーク。
  • TV:ユーザーが大画面で没入型コンテンツを体験できるアプリケーションを構築します。
  • Wear OS:Wearアプリの開発に役立つコンポーネント

1-3。行動

動作コンポーネントは、開発者のアプリケーションを標準のAndroidサービス(通知、権限、共有など)と統合するのに役立ちます

  • CameraX:開発者がカメラアプリケーションの開発を簡素化するのに役立ちます。一貫性のある使いやすいAPIインターフェースを提供し、ほとんどのAndroidデバイスに適しており、Android 5.0(APIレベル21)との​​下位互換性があります。
  • DownloadManager(ダウンロードマネージャー):長時間実行されるHTTPダウンロードを処理し、障害や接続の変更およびシステムの再起動が発生した場合にダウンロードを再試行できます。
  • メディアと再生:メディアの再生とルーティングのための下位互換性のあるAPI(Google Castを含む)。
  • 通知:下位互換性のある通知APIを提供し、WearとAutoをサポートします。
  • 権限:アプリケーションの権限を確認および要求するための互換性API。
  • プリファレンス(プリファレンス):アプリケーションの機能と動作を変更する機能をユーザーに提供します。
  • 共有(共有):アプリケーション操作バーに適した共有操作を提供します。
  • スライス:スライスは、アプリケーションの外部にアプリケーションデータを表示できる柔軟なインターフェイス要素を作成するUIテンプレートです。

1-4.UI(インターフェースコンポーネント)

インターフェイスコンポーネントは、さまざまなビューと補助プログラムを提供できるため、アプリケーションは使いやすいだけでなく、快適なエクスペリエンスも提供します。次のコンポーネントライブラリが含まれています

  • アニメーションとトランジション:このフレームワークには、一般的なエフェクト用の組み込みアニメーションが含まれており、開発者はカスタムアニメーションとライフサイクルコールバックを作成できます。
  • 絵文字(絵文字):ユーザーがシステムバージョンを更新せずに最新の絵文字を取得できるようにします。
  • フラグメント:コンポーネント化されたインターフェースの基本単位。
  • レイアウト:xmlで記述されたインターフェースレイアウト、またはComposeを使用して完成したインターフェース。
  • パレット:パレットから有用な情報を抽出します

2.Jetpack関連のコンポーネントをアプリケーションに導入します

すべてのコンポーネントは、Jetpackの中で利用可能な GoogleのMavenのコードベースで見られます

プロジェクトのbuild.gradleファイルを開き、以下に示すようにgoogle()コードライブラリを追加します

allprojects {
    repositories {
        google()
        jcenter()
    }
}

次に、次のようにJetpackコンポーネント(LiveDataやViewModelなどのアーキテクチャコンポーネントなど)を追加できます。

    def lifecycle_version = "2.2.0"
    implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
    implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"

上記のlifecycle-livedata-ktxおよびlifecycle-viewmodel-ktxに示すように、多くのJetpackライブラリはAndroidKTX拡張機能を提供 します。KTX拡張機能は、JavaベースのAPIに基づいて構築されており、Kotlinの独自の言語機能を最大限に活用しています。

Kotlin およびJavaベースの APIリファレンスドキュメントページに基づいて、すべてのJetpackギャラリーに適用されます

3.まとめ

明らかに、建築コンポーネントは私たちにとって非常に実用的な価値があり、私たちはそれらを理解して学ぶ必要があります

アプリの実用ガイド:https//github.com/googlesamples/android-sunflower

開発者:https//developer.android.google.cn/jetpack/getting-started?hl = zh-cn

アーキテクチャコンポーネント:https//developer.android.google.cn/topic/libraries/architecture?hl = zh-cn

 

おすすめ

転載: blog.csdn.net/PrisonJoker/article/details/113966093