第5章Androidネットワークの知識とネットワークのフレームワーク

(1)HttpClientとHttpURLConnectionの違い

Androidは主にネットワーク要求を行う2つの方法を提供します:HttpClientとHttpUrlConnectionです。どちらの方法でも、httpsプロトコル、ストリーミングの形式でのアップロードとダウンロード、タイムアウトイベントの構成、IPV6、接続プールなどの機能がサポートされています。
HttpClientには多くのAPIがあり、安定していてバグがほとんどありません。ただし、拡張が難しく、維持費が高い。Android 6.0以降は削除されました。
HttpUrlConnectionは、拡張が簡単なシンプルで軽量なAPIを提供します。しかし、Android 2.2以前は大きなバグがありました。2.3以降、バグが修正され、圧縮およびキャッシングメカニズムが提供され、ネットワークパフォーマンスが効果的に改善されました。

(2)Volley、OkHttp、Retrofit(一般的に使用される3つのAndroidネットワークフレームワーク)の違いと主要な原則および使用シナリオ

1. Volleyは、Googleによって起動されたネットワーク通信フレームワークであり、データ量は少ないが頻繁に通信するネットワーク操作に適しています。ただし、大きなファイルのダウンロードには適していません。
機能は次のとおりです。(1)ネットワークリクエストの送信と取得、画像非同期処理リクエスト(2)ネットワークリクエストの並べ替えと優先順位付け(3)ネットワークリクエストのキャッシュ(4)マルチレベルのキャンセルリクエスト(5)とアクティビティライフサイクルリンケージ
の動作原理は、最初にリクエストをキャッシュキューに追加し、cacheDispatcherにクエリを実行して、リクエスト結果がローカルにキャッシュされているかどうかをクエリします。ヒットした場合、結果はキャッシュから解析され、メインスレッドに返されます。ヒットしなかった場合、リクエストはネットワークに追加されますキューに入れ、networkDispatcherを介してネットワーク要求を送信し、応答結果を取得して解析し、結果をキャッシュに書き込んで、メインスレッドに戻ります。
2. OkHttpは、Http2 / SPDYをサポートする、Squareチームによって開発されたネットワーク通信フレームワークです。つまり、同じサーバーのすべてのリクエストを処理するために同じソケットの共有をサポートします。SPDYが利用できない場合、接続プールを使用してリクエストの遅延を減らします。再接続メカニズム、キャッシュ応答データ、GZIPをサポートして、データトラフィックを削減します。
OkHttpのコアデザインパターンは、インターセプターチェーンオブ責任モデルです。チェーンオブ責任モデルは、各機能を分離するために使用されます。各インターセプターは独自のタスクを完了し、インターセプターに属していないタスクは次のタスクに引き渡され、それぞれの責任が簡素化されます。そしてロジックは、ネットワーク要求を実現しました。この設計の利点は、責任の各チェーンが、キャッシング、圧縮、ネットワークIO、要求などの機能をレイヤーに実装でき、応答データに対して他の論理処理を実行できることです。
OkHttpは、大量のデータを伴う重いネットワーク要求に適しています。
3. RetrofitはRESTfulスタイルに基づくネットワークリクエストフレームワークパッケージであり、OKHttpに基づくネットワークリクエストフレームワークのセカンダリパッケージです。最下層はOKHttpを介してネットワーク要求を行うことであり、Retrofitはネットワーク要求インターフェースのカプセル化のみを担当します。これにより、ユーザーネットワーク要求パラメーターの構成が簡素化され、Rxjavaと組み合わせることができます。
Retrofitは多数の設計パターンを使用してOkHttpをカプセル化します。その中核的な動作原理は、HttpリクエストをJavaインターフェースとして抽象化し、アノテーションを使用してインターフェースでネットワークリクエストパラメータを記述および構成することです。Retrofitは動的プロキシを使用して、ネットワーク要求インターフェースの注釈をHTTP要求に動的に解析します。最後に、HTTPリクエストはOKHttpを介して実行されます。
レトロフィットはあらゆるシーンで推奨されます。特に、背景のAPIはRESTfulスタイルに準拠し、プロジェクトでRxJavaを使用します。

(3)ネットワーク要求キャッシュ処理、okhttpはネットワークキャッシュをどのように処理しますか?

Httpネットワークリクエストキャッシュ処理:
強制キャッシュ:ユーザーが初めてデータをリクエストしたときに、サーバーはキャッシュの有効期限を返します(有効期限とCache-Control)。有効期限が切れていない場合は、引き続きキャッシュを使用できます。有効期限が切れている場合は、キャッシュは使用されません。サーバーを要求する必要はもうありません。
コントラストキャッシュ:ユーザーが初めてデータを要求すると、サーバーはキャッシュ識別子(Etag / If-None-MatchおよびLast-Modified / If-Modified-Since)をデータと共にユーザーに返します。どちらもキャッシュにバックアップされ、データを再度要求すると、ユーザー側は最後にバックアップされたキャッシュ
IDをサーバーに送信します。サーバーは、キャッシュIDに従ってキャッシュが期限切れかどうかを判断します。304が返された場合、キャッシュが利用可能であり、キャッシュから読み取られますデータを取得します。200が返された場合、ロゴキャッシュは利用できません。サーバーに要求し、返された最新のデータを使用します。

公開された74元の記事 ウォン称賛15 ビュー6254

おすすめ

転載: blog.csdn.net/qq_29966203/article/details/95720586