インタビュアー:Android開発者として、jetpackさえ知らないのですか?あなたはあなたのキャリアを変えるべきです!

JetPackは2018年に発売され、3年目を迎えました。しかし、中国での人気は海外に比べてはるかに低く、国内の開発者が他の人がJetPackと言うのを聞くと、頭に浮かぶ言葉は「未熟」、「使いにくい」「デバッグが難しい」です。しかし、真実はそれは本当にそうですか?

まず、JetPackがリリースされたときの野心を見てみましょう。

上記はGoogleの引用によるものです。要約すると:

  1. JetPackは、コンポーネントライブラリの完全なセットです。

  2. 高品質のアプリケーションを作成するのに役立ちます

  3. 不健康な定型コードを書く必要がなくなります

4.それは私たちの開発行動を規制することができます

次に、JetPackコンポーネントライブラリに含まれているコンポーネントを見てみましょう。

上の図から、JetPackコンポーネントライブラリは主に、アーキテクチャ(アーキテクチャ)インターフェイス(UI)動作(動作)、および基盤(基盤)の4つの部分に分かれていることがわかります各コンポーネントは、単独で使用することも、組み合わせて使用​​することもできます。それらの中には、DataBinding、LiveData、Paging、Room、ViewModel、Lifecyclesがあります。

しかし、なぜ国内の開発者がそれを受け入れるのが難しいのですか?実際、いくつかの理由を分析できます。

  1. 新技術の匂いは比較的遅い

  2. JetPackの単一コンポーネントの使用方法、使用場所がわかりません

  3. 完全なコピーソースはありません

  4. 古いプロジェクトは以前はJetPackを使用していませんでしたが、今では変更が全身に影響し、怠惰な変更が行われ、誰でも好きになります

  5. JetPackが何であるかわからない

上記の分析は少し直接的な打撃かもしれませんが、それは本当です。実際、上記の理由を要約すると、JetPackをよく知らないためです。JetPackを使用したことがあるが、ソースコードと基本的な原則に精通していない場合でも、JetPackについてあまり知らないパートナーを見つけるようなものです。それで、あなたは簡単にあなた自身を引き渡すでしょう。彼または彼女ですか?

これらの理由から、JetPackの能力とそれがもたらす可能性のある変化を誰もが完全に無視しています。次に、JetPackがもたらす可能性のあるものを分析します。

1.Androidアーキテクチャの問題を解決しました

GoogleはこれまでAndroidアプリケーションのアーキテクチャ設計の標準を導入したことがないため、さまざまな企業の開発者は、独自のプロジェクトに適合する一連の開発計画を磨く必要があります。しかし、これは2つの明らかな問題を引き起こします。1つは、これらの計画が荒れた道路から生まれ、公式のステータスがないことです。2つ目は、すべての人の期待に応える一連の計画が見つからないことです。率直に言って、統一された標準と深刻な断片化はありません。そのため、Googleはこの問題を認識し、JetPackをリリースしました。これにより、開発者はアーキテクチャの設計を絡ませることなく標準のアーキテクチャコンポーネントを使用でき、独自のビジネスコードに集中できます。

2.コード品質の向上

Jetpackには、ライフサイクルの認識に基づく機能があり、メモリリークやNPEのクラッシュを減らすことができ、堅牢でスムーズなプログラムを開発するための強力な保証を提供します。同時に、ボイラープレートコードの自動生成により、残りの数を減らすことができます。バグ。

3.開発効率の向上

Jetpackは、定型コードを削減し、Android開発の効率を向上させるのに役立ちます。これらのコンポーネントは、単独で使用することも組み合わせて使用​​することもでき、Androidのさまざまなバージョンで同じように実行できます。

これらのJetPackによってもたらされた変更を見て、それを手放して誘惑することはできますか?次に、実際の仕事の要件から進みます。

JetPackは多くの職務要件で明確になっていることをここで誰もが理解しているはずです。これは、以前の知識ポイントに加えて、JetPackが将来の面接プロセスに登場することも意味します。

そうは言っても、JetPackの学習方法について話しましょう。多くの人は通常、開発中にコピーして貼り付け、原理をわざわざ理解しませんが、JetPackの原理を知らないと、ヒューマンエラーが発生しやすいことがわかります。発生する。これが戻ってきた。当初、多くの人がJetPackには多くの問題があると考えているが、実際にはそうではないが、あなたはそれについて十分に知らない。したがって、学習したい場合は、アプリケーションのレベルにとどまるだけでなく、徹底的に学習し、それらのすべての原則を理解する必要があります。

学ぶ方法は?

学習教材が不足していて、このアリババの内部Jetpackコレクションを入門から習熟まで見つけた場合、チュートリアルは理解しやすく、基本的な知識と高度なスキルの両方の例が豊富で、読者がすぐに始めるのに役立ちます。ジェットパックのひまわりの本を学ぶのはあなたです。

「入門から習熟までのJetpackアーキテクチャコンポーネント」のフルセットが必要な場合は、記事の最後に直接アクセスして無料で入手してください〜

AndroidJetpack-ナビゲーション

ナビゲーションはナビゲーションとして直接変換されます。これはAndroidJetpackコンポーネントの1つであり、単一のアクティビティアプリケーションを推奨されるアーキテクチャにします。アプリケーションのFragmentページのジャンプはナビゲーションによって処理され、開発者はFragmentTransactionおよび関連する遷移アニメーションの複雑さに対処する必要はありません。


AndroidJetpack-データバインディング

データバインディングは、コーディングメソッドの代わりに宣言型メソッドを使用してUIコントロールとデータソースをバインドするサポートライブラリです。
通常、UIフレームワークレイヤーのメソッドを呼び出して、アクティビティでビューを宣言します。たとえば、次のコードはfindViewById()を呼び出して、TextViewコントロールを宣言し、それをviewModelのuserNameプロパティにバインドします。

findViewById<TextView>(R.id.sample_text).apply {
    text = viewModel.userName
}

次のコードは、データバインディングを使用して、レイアウト内のTextViewのテスト属性に値を直接割り当てる方法を示しています。これの利点は、上記の例のようにJavaコードを呼び出す必要がないことです。代入式で使用される構文は@ {}であることに注意してください。

<TextView
    android:text="@{viewmodel.userName}" />

UIコントロールをレイアウトに直接バインドすると、アクティビティでのUIフレームワークメソッドの呼び出しを減らすことができます。これにより、コードがより簡潔になり、保守が容易になります。また、アプリのパフォーマンスを向上させ、メモリリークやnullポインタの例外を回避できます。


AndroidJetpack-ViewModelとLiveData

ViewModelビューとロジックは分離されています。ActivityまたはFragment、UI表示部分のみを担当します。特定のネットワーク要求またはデータベース操作がViewModel責任を負います。MVPパターンのPresenterレイヤーていますViewModelこのクラスは、ライフサイクル指向の方法でインターフェイス関連のデータを格納および管理するように設計されています。画面の回転などの構成変更後にデータを保持できるようにします画面の回転などの構成アイテムを変更すると、アクティビティが破棄されて再構築されることがわかっています。この時点で、アクティビティによって保持されているデータは失わViewModelれ、破棄されないため、プロセスでデータを保存するのに役立ちます。また潜在的なメモリリークを心配するかどうかに関係なく通信を通じてレイヤーのインスタンスをViewModel保持しないでくださいViewLiveDataActivityFragment

LiveDataこれは、監視可能なデータストレージクラスです。定期的に観察可能なクラスとは異なり、LiveDataは、ライフサイクルの意識を持って、それは次のことを意味し、ライフサイクル他のアプリケーションコンポーネントのを(のようなActivityFragmentまたはService)。この認識機能によりLiveData、データソースが変更されたときに、そのオブザーバーにUIインターフェイスを更新するように通知されます。同時に、アクティブ状態のオブザーバーにインターフェースを更新するよう通知するだけです。オブザーバーの状態がPausedor状態のDestroyed場合、通知は受信されません。したがって、メモリリークについて心配する必要はありません。


AndroidJetpack-部屋

RoomはJetpackコンポーネントライブラリのメンバーであり、ORMライブラリに属しています。主にSqliteを抽象化して、開発者によるデータベースの操作を簡素化します。Roomは、コンパイル時の構文チェックをサポートし、LiveDataを返すことをサポートします。

依存関係を追加する

アプリのbuild.gradleに次の依存関係を追加します。

def room_version = "2.2.0-rc01"

implementation "androidx.room:room-runtime:$room_version"
// For Kotlin use kapt instead of annotationProcessor (注意这个注释)
kapt "androidx.room:room-compiler:$room_version"

プロジェクトがKotlin言語を使用して開発されている場合は、room-compilerを追加するときにkaptキーワードを使用し、Java言語の開発にはannotationProcessorキーを使用します。そうしないと、アクセスエラーが発生します。

AndroidJetpack-ページング

多くのアプリケーションは、多数のアイテムを含むデータソースからデータを取得しますが、一度に表示するのはデータのごく一部にすぎません。アプリケーションに表示されるデータのロードは、大規模でコストがかかる可能性があるため、一度に大量のデータをダウンロード、作成、または提示することは避けてください。アプリケーションでのデータの段階的な読み込みを容易にするために、Googleメソッドはこのコンポーネントを提供します。このコンポーネントは簡単に読み込むことができ、RecyclerViewを使用して大規模なデータセットを高速で無限にスクロールできます。ローカルストレージ、ネットワーク、またはその両方からページングデータをロードでき、コンテンツのロード方法をカスタマイズできます。Room、LiveData、RxJavaで使用できます。

ページングLibrayは、DataSource、PagedList、PagedAdapterの3つの部分に分かれています。

AndroidJetpack-WorkManger

WorkManagerは、AndroidJetpackでバックグラウンドタスクを管理するためのコンポーネントです。

一般的な使用シナリオ:1。ログまたは分析データをバックエンドサービスに送信します2.アプリケーションデータをサーバーと定期的に同期します

WorkManager APIを使用して、バックグラウンドタスクを簡単にスケジュールします。遅延して実行でき(つまり、すぐに実行する必要がない)、アプリケーションが終了したとき(プロセスが閉じられていないとき)またはアプリケーションが再起動したときに確実に実行できるタスク。

AndroidJetpackアーキテクチャコンポーネントのライフサイクル

アプリケーションのセキュリティについては、バックグラウンドからフォアグラウンドに切り替える際のソフトウェア確認などのセキュリティ確認処理が必要になることがよくあります。過去の場合、この要件を達成することは実際には非常に困難です。しかし、Googleがライフサイクルコンポーネントをリリースして以来、この要件ははるかに単純になりました。バックグラウンドからフォアグラウンドに戻るライフサイクルの認識に加えて、このコンポーネントを使用して、複雑なライフサイクル操作をより簡単に実装できます。


Android JetpackComposeの最も包括的なガイド

Jetpack Composeは、ネイティブAndroid UIを構築するための最新のツールキットです。宣言型プログラミングモデルに基づいているため、UIの外観を簡単に説明でき、残りはComposeが処理します。状態が変わると、UIが更新されます。自動的に。ComposeはKotlin上に構築されているため、Javaプログラミング言語と完全に相互運用可能であり、すべてのAndroidJetpackAPIに直接アクセスできます。また、既存のUIツールキットと完全に互換性があるため、元のビューと新しいビューを組み合わせて、マテリアルとアニメーションを使用して最初からデザインすることができます。

結論

記事の長さが限られているため、コンテンツの一部のみが表示されます。このメモには、Android Jetpackアーキテクチャコンポーネント(アプリの起動、最新のAndroid Jetpackコンポーネントの紹介、実際のAndroid Jetpackプロジェクトの戦闘(WanAndroidクライアントのJetpackバージョンのビルド0)、実際のプロジェクトの戦闘など。

この情報を必要としている友達がいる場合は、ここをクリックして無料で入手できます

Androidアーキテクチャとインタビューのトピックの詳細については、こちらをご覧ください。

おすすめ

転載: blog.csdn.net/Android578/article/details/113725933