Androidネットワークライブラリの比較:OkHTTP、Retrofit、Volley [閉じる]



Comparison Android Network Libraries



この記事の翻訳元: Androidネットワーキングライブラリの比較:OkHTTP、Retrofit、およびVolley [終了]

Androidを学び、JSONから画像、オーディオとビデオのストリーミングダウンロードまでさまざまなリクエストを行うAndroidプロジェクトに取り組んでいるiOS開発者からの2部構成の質問: Androidを学習しているiOS開発者からの2部構成の質問です。この質問には、JSONから画像、オーディオおよびビデオストリーミングのダウンロードまでさまざまなリクエストを行うAndroidプロジェクトが含まれます。



  1. iOSでは私は AFNetworking 広範囲にプロジェクトします。 iOSでは、私はそれを広く使用しています AFNetworking 事業。 Android用の同等のライブラリはありますか? Android用の同等のライブラリはありますか?

  2. 私は読んだ OkHTTP そして 改造 スクエアによって、そして バレーボール しかし、まだ彼らと一緒に開発した経験はありません。 Square'sを読みました OkHTTP改造 、と同様 バレーボール、 しかし、彼らと一緒に開発した経験はありません。 誰かがそれぞれの最良のユースケースの具体的な例をいくつか提供してくれることを願っています。 誰かがそれぞれのケースに最適なユースケースの具体例をいくつか提供してくれることを願っています。 私が読んだところによると、OkHTTPは3つの中で最も堅牢であり、このプロジェクトの要件を処理できるようです(上記)。 私の読書によると、OkHTTPは3つの中で最も強力であり、プロジェクトの要件を満たすことができるようです(上記のとおり)。




#1階

参照: https://stackoom.com/question/18vAS/Androidネットワークライブラリの比較-OkHTTP-RetrofitとVolley-閉じる


#2階

誰かがそれぞれの最良のユースケースの具体例をいくつか提供してくれることを願っています。 誰かがそれぞれのケースに最適なユースケースの具体例をいくつか提供してくれることを願っています。

Webサービスと通信する場合は、Retrofitを使用してください。 Webサービスと通信する場合は、Retrofitを使用してください。 画像をダウンロードする場合は、ピアライブラリのピカソを使用してください。 画像をダウンロードしたい場合は、ピアライブラリのピカソをご利用ください。 Retrofit / Picassoの外部にあるHTTP操作を実行する必要がある場合は、OkHTTPを使用します。 Retrofit / Picasso以外のHTTP操作を実行する必要がある場合は、OkHTTPを使用してください。



ボレーは大まかにレトロフィット+ピカソと競合します。 バレーボールは、Retrofit + Picassoと大まかに競合します。 プラス面では、それは1つのライブラリです。 明るい面では、それは図書館です。 マイナス面としては、これは文書化されていない、サポートされていない1つのものであり、「コードを壁に投げて、そのライブラリでI | Oプレゼンテーションを実行します」。 欠点は、文書化されていないものであり、サポートされていない '壁にコードを投げて、私は|その上にOデモのライブラリ。

編集-ボレーは現在、Googleによって正式にサポートされています。 編集者-ボレーは現在、Googleによって正式にサポートされています。 よろしくお願いします Google Developer Guide 参照してください Google Developer Guide

私が読んだことから、OkHTTPは3つの中で最も堅牢であるように思われます 私の読書によると、OkHTTPは3つの中で最も強力なようです

Retrofitは、可能な場合は自動的にOkHTTPを使用します。 利用可能な場合、Retrofitは自動的にOkHTTPを使用します。 あります ジェイク・ウォートンの要点 VolleyをOkHTTPに接続します。 ジェイク・ウォートン ここに一つ 主なポイント 、VolleyをOkHTTPに接続します。

そして、このプロジェクトの要件を処理することができます(上記)。 そして、プロジェクトの要件を満たすことができます(上記のとおり)。

おそらく、「ストリーミング」の従来の定義によれば、「オーディオとビデオのストリーミングダウンロード」にはそれらのどれも使用しないでしょう。 「ストリーミング」の一般的な定義によれば、「オーディオおよびビデオのダウンロードのストリーミング」にそれらを使用することはできません。 代わりに、AndroidのメディアフレームワークがこれらのHTTPリクエストを処理します。 代わりに、AndroidのメディアフレームワークがこれらのHTTPリクエストを処理します。

そうは言っても、独自のHTTPベースのストリーミングを行おうとする場合は、OkHTTPがそのシナリオを処理する必要があります。 そうは言っても、独自のHTTPベースのストリーミングを試す予定がある場合は、OkHTTPでこの状況を処理できるはずです。 ボレーがそのシナリオをどれだけうまく処理したか覚えていません。 ボレーがこの状況をどのように処理するかは覚えていません。 RetrofitもPicassoもそのために設計されていません。 RetrofitもPicassoもこの目的のために設計されていません。


#3階

ここでボレーの観点を見ると、要件に対するいくつかの利点があります。 ボレーの観点から、ここにあなたが必要とするいくつかの利点があります:

Volleyは、一方で、個々の小さなHTTPリクエストの処理に完全に焦点を合わせています。 一方では、Volleyは単一の小さなHTTPリクエストの処理に完全に焦点を合わせています。 したがって、HTTPリクエストの処理にいくつかの癖がある場合、Volleyにはおそらくフックがあります。 したがって、HTTPリクエストの処理にいくつかの癖がある場合、Volleyがフックを提供することがあります。 一方、画像処理に癖がある場合、あなたが持っている唯一の本当のフックは ImageCache 一方、画像処理に癖がある場合、唯一の本当のフックは ImageCache 「それは何もないわけではありませんが、多くはありません!」 「それがないわけではありませんが、多くはありません!」 ただし、リクエストを定義すると、並列AsyncTasksとは異なり、フラグメントまたはアクティビティ内からリクエストを使用するのは簡単です。 ただし、他にも多くの利点があります。たとえば、リクエストを定義すると、フラグメントまたはアクティビティで使用できます。これは、並列AsyncTasksと同じくらい簡単です。

バレーボールの長所と短所: ボレー喫煙の長所と短所:

では、ボレーの何がいいのでしょうか。 では、ボレーの利点は何ですか?

  • ネットワーキングの部分は画像だけのものではありません。 ネットワーク部分は画像だけのものではありません。 ボレーは、バックエンドの不可欠な部分となることを目的としています。 ボレーはあなたのバックエンドの不可欠な部分になることを目指しています。 単純なRESTサービスに基づく新しいプロジェクトの場合、これは大きなメリットになる可能性があります。 単純なRESTサービスに基づくまったく新しいプロジェクトの場合、これは大きなメリットになる可能性があります。

  • NetworkImageViewは、ピカソよりもリクエストのクリーンアップに積極的であり、GCの使用パターンはより保守的です。 ピカソと比較して、NetworkImageViewはリクエストの削除においてより積極的であり、GCの使用パターンにおいてより保守的です。 NetworkImageViewは、強力なメモリ参照のみに依存しており、ImageViewに対して新しい要求が行われるとすぐに、またはそのImageViewが画面外に移動するとすぐに、すべての要求データをクリーンアップします。 NetworkImageViewは、強力なメモリ参照に完全に依存しており、ImageViewに対して新しい要求が行われたとき、またはImageViewが画面から移動したときに、要求されたすべてのデータを即座にクリアします。

  • パフォーマンス。 パフォーマンス。 この投稿ではこの主張を評価しませんが、彼らは明らかにメモリ使用パターンに慎重になるように注意を払っています。 この記事ではこの主張を評価しませんが、彼らは明らかに彼らのメモリ使用パターンを注意深く検討しました。 Volleyはまた、コンテキストの切り替えを減らすために、メインスレッドへのコールバックをバッチ処理するように努めています。 Volleyはまた、コンテキストの切り替えを減らすために、メインスレッドへのコールバックをバッチ処理するように努めています。

  • ボレーにも先物があるらしい。 ボレーには明らかに先物もあります。 興味があればRequestFutureをチェックしてください。 興味のある方はRequestFutureをご確認ください。

  • 高解像度の圧縮画像を扱っている場合、ここでうまく機能するのはVolleyだけです。 高解像度の圧縮画像を扱っている場合、ここで機能するソリューションはVolleyだけです。

  • VolleyはOkhttpで使用できます(Okhttpの新しいバージョンはパフォーマンスを向上させるためにNIOをサポートしています) VolleyはOkhttpで使用できます(Okhttpの新しいバージョンはパフォーマンスを向上させるためにNIOをサポートしています)

  • ボレーは、アクティビティのライフサイクルでうまく機能します。 バレーボールは「アクティブな」ライフサイクルでうまく機能します。

ボレーの問題: バレーボールの問題:
Volleyは新しいため、まだサポートされていないものはほとんどありませんが、修正されています。 Volleyは新製品であるため、一部の機能はまだサポートされていませんが、修正されています。

  1. マルチパートリクエスト(解決策: https://github.com/vinaysshenoy/enhanced-volley )。 マルチパートリクエスト(解決策: https//github.com/vinaysshenoy/enhanced-volley )。

  2. ステータスコード201はエラーと見なされ、ステータスコード200から207は成功した応答になりました(修正済み: https://github.com/Vinayrraj/CustomVolley )。 ステータスコード201はエラーと見なされ、200から207までのステータスコードが正常に応答しました。 (修正: https//github.com/Vinayrraj/CustomVolley )。

    更新: Googleボレーの最新リリースでは、2XXステータスコードのバグは 修繕 今!FicusKirkpatrickに感謝します! 更新: Google Volleyの最新バージョンでは、2xxステータスコードエラーは 安定している 、Ficus Patrickに感謝します!

  3. あまり文書化されていませんが、多くの人がgithubでボレーをサポートしています。Javaのような文書が見つかります ここに ドキュメントは少ないですが、多くの人がgithubでボレーをサポートしています。 ここに Javaに類似したドキュメントを見つけてください。 アンドロイド開発者のウェブサイトで、あなたはのためのガイドを見つけるかもしれません ボレーを使用したネットワークデータの送信 アンドロイド開発者サイトで、あなたは見つけることができます Volleyを使用してネットワークデータを転送する ガイド。 そしてボレーのソースコードはで見つけることができます Google Git ボレーのソースコードは次の場所にあります。 Google Git 現れる

  4. 解決/変更するには ボレーのリダイレクトポリシー フレームワークの使用 OkHTTPを使用したボレー (上記のCommonsWare) 解決/変更するには バレーボール フレームワーク リダイレクト戦略、 OkHTTPでVolleyを使用してください (上記のCommonsWare)

また、これを読むことができます ボレーの画像読み込みとピカソの比較 あなたも読むことができます ピカソの画像を「ボレー」と比較する

改造: 変換:

それはによってリリースされます 平方 、これは非常に使いやすいREST APIを提供します(更新:Voila!、NIOサポート付き) それはで構成されています 平方 リリースされ、非常に使いやすいREST APIを提供します(更新:Voila!NIOサポート付き)

レトロフィットの長所: 変換の利点:

  • Volleyと比較すると、RetrofitのREST APIコードは簡潔で、優れたAPIドキュメントを提供し、コミュニティで優れたサポートを提供します。 Volleyと比較すると、RetrofitのREST APIコードは短く、優れたAPIドキュメントを提供し、コミュニティで優れたサポートを提供します。 プロジェクトに追加するのは非常に簡単です。 プロジェクトへの追加は非常に簡単です。

  • エラー処理を使用して、任意のシリアル化ライブラリで使用できます。 エラー処理のある任意のシリアル化ライブラリで使用できます。

更新: --Retrofit2.0.0-beta2には非常に優れた変更がたくさんあります 更新: -Retrofit2.0.0-beta2には多くの非常に優れた変更があります

  • OkHttp 2.0を使用したRetrofitのバージョン1.6は、 オキオ サポートする java.io そして java.nio これにより、を使用してデータにアクセス、保存、処理することがはるかに簡単になります ByteString そして バッファ CPUとメモリを節約するためにいくつかの賢いことをするために。 OkHttp 2.0の改良版は、 オキオ サポートするには java.iojava.nio 、アクセス、保存、使用が簡単になります バイト文字列緩衝地帯 データを処理するためにCPUとメモリを節約するために何か賢いことをしてください。 (参考:これは私に Koush's OIN NIOをサポートするライブラリ!) 使用できます RxJavaと一緒に改造する を使用してREST呼び出しを結合およびチェーンする rxObservables 醜いコールバックチェーンを避けるため (コールバック地獄を避けるために!!) (参考:これは私に思い出させます Koush's OIN NIOでライブラリをサポート! )。 使用できます RiseとRxJava 組み合わせて使用​​する rxObservables 醜いコールバックチェーンチェーンREST呼び出しを避ける (コールバック地獄を避けてください!)。

バージョン1.6のレトロフィットの短所: バージョン1.6変換のデメリット:

  • メモリ関連のエラー処理機能は(古いバージョンのRetrofit / OkHttpでは)良くありません。JavaNIOをサポートするOkioで改善されているかどうかはわかりません。 メモリ関連のエラー処理機能は(古いバージョンのRetrofit / OkHttpでは)良くありません。JavaNIOをサポートするOkioがそれを改善するかどうかはわかりません。

  • これを不適切な方法で使用すると、最小限のスレッド支援により、コールバックが発生する可能性があります。 間違った方法で使用すると、スレッドヘルプが最小になるとコールバックが発生する可能性があります。

(上記のすべての短所は、Retrofit 2.0ベータの新しいバージョンで解決されました) (上記のすべての欠点は、Retrofit 2.0ベータの新しいバージョンで解決されました)

================================================= = ===================== ================================================= = =====================

更新: 更新:

Android Async vs Volley vs Retrofitパフォーマンスベンチマーク(ミリ秒、値が小さいほど良い): Android Async、Volley、およびRetrofitのパフォーマンスベンチマーク(ミリ秒、値が低いほど良い):

Android Async、Volley Retrofit

(OKhttpの新しいバージョンはNIO Okioライブラリに依存しているため、Retrofitベンチマーク情報の上のFYIはJava NIOサポートで改善されます) (上記の更新されたベンチマーク情報のFYIは、Java NIOサポートによって改善されます。これは、OKhttpの新しいバージョンがNIO Okioライブラリに依存しているためです)

さまざまな繰り返し(1〜25回)を使用した3つのテストすべてで、ボレーは50%から75%高速でした。 繰り返しが異なる3つのテストすべて(1〜25)で、ボレーの速度は50%から75%増加しました。 Retrofitは、AsyncTasksよりも50%から90%速くクロックインし、同じエンドポイントに同じ回数ヒットしました。 改修の速度はAsyncTasksよりも50%から90%速く、同じエンドポイントに到達する回数は同じです。 ダッシュボードテストスイートでは、これはデータの読み込み/解析を数秒速くすることになりました。 ダッシュボードテストスイートでは、これは数秒間のデータの読み込み/解析の高速化につながります。 それは現実世界の大きな違いです。 それは現実の世界では大きな違いです。 テストを公平にするために、AsyncTasks / Volleyの時間には、Retrofitが自動的に行うJSON解析が含まれていました。 テストを公平にするために、AsyncTasks / Volleyの時間にはJSON解析が含まれています。これは、Retrofitが自動的に実行するためです。

RetroFitがベンチマークテストで勝ちました! RetroFitがベンチマークを獲得しました!

最終的に、アプリケーションにRetrofitを使用することにしました。 最終的に、アプリケーションにRetrofitを使用することにしました。 途方もなく高速であるだけでなく、既存のアーキテクチャと非常によく調和しています。 途方もなく高速であるだけでなく、既存のアーキテクチャと非常に一貫性があります。 APIの労力をほとんどまたはまったくかけずに、エラー処理、キャッシュ、ページ付けを自動的に実行する親コールバックインターフェイスを作成することができました。 エラー処理、キャッシュ、ページングを自動的に実行できる親コールバックインターフェイスを作成でき、APIにほとんど労力を必要としません。 Retrofitにマージするには、変数の名前を変更してモデルをGSONに準拠させ、いくつかの単純なインターフェイスを記述し、古いAPIから関数を削除し、AsyncTasksを使用しないようにフラグメントを変更する必要がありました。 Retrofitに組み込むには、モデルがGSONの要件を満たすように変数の名前を変更し、いくつかの単純なインターフェイスを記述し、古いAPIから関数を削除し、AsyncTasksを使用しないようにフラグメントを変更する必要があります。 いくつかのフラグメントが完全に変換されたので、かなり苦痛はありません。 これで、いくつかのクリップの完全な変換が完了しました。これは非常に簡単です。 私たちが克服しなければならないいくつかの成長する痛みと問題がありましたが、全体的には順調に進みました。 増大する痛みや問題を克服する必要がありますが、全体としては順調に進んでいます。 最初は、いくつかの技術的な問題やバグに遭遇しましたが、Squareには素晴らしいGoogle+コミュニティがあり、それを介して私たちを助けてくれました。 最初は、いくつかの技術的な問題やバグに遭遇しましたが、Squareにはこの問題の解決に役立つ優れたGoogle+コミュニティがあります。

ボレーはいつ使うの? ボレーを使うときは?!

画像をロードしたり、REST APIを使用したりする必要がある場合は、Volleyを使用できます。同時に多くのn / wリクエストには、ネットワーク呼び出しキューイングシステムが必要です。 画像を読み込んでRESTAPIを使用する必要がある場合は、Volley!を使用できます。また、多くのn / wリクエストには、ネットワーク呼び出しキューイングシステムが必要です。 また、Volleyは、Retrofitよりもメモリ関連のエラー処理が優れています。 また、Volleyは、Retrofitよりもメモリ関連のエラー処理が優れています。

OkHttp ボレーで使用でき、レトロフィットは OkHttp デフォルトで! OkHttp Volleyで使用でき、Retrofitはデフォルトで使用します OkHttp それは持っています SPDY サポート、接続プーリング、ディスクキャッシング、透過的圧縮! それは持っています SPDY サポート、接続プール、ディスクキャッシュ、透過的圧縮! 最近、JavaNIOのサポートがあります。 オキオ 図書館。 最近合格しました オキオ ライブラリはJavaNIOのサポートを受けました。

出典、クレジット: ボレー対レトロフィット JoshRuesch氏 出典:クレジット:JoshRuesch氏による提案 ボレー対- 改造

注意: ストリーミングについては、RTSP / RTCPなどのストリーミングの種類によって異なります。 注意: ストリームに関しては、RTSP / RTCPなど、必要なストリームタイプによって異なります。


#4階

RoboSpice対 RoboSpiceと バレーボール バレーボール

から https://groups.google.com/forum/#!topic/robospice/QwVCfY_glOQ から https://groups.google.com/forum/#!topic/robospice/QwVCfY_glOQ

  • RoboSpice(RS)はサービスベースであり、VolleyよりもAndroidの哲学を尊重しています。 RoboSpice(RS)はサービスベースであり、VolleyよりもAndroidの哲学を尊重しています。 ボレーはスレッドベースであり、これはAndroidでバックグラウンド処理を行う方法ではありません。 Volleyはスレッドに基づいていますが、これはAndroidでのバックグラウンド処理の方法ではありません。 最終的には、両方のライブラリを掘り下げて、それらが非常に似ていることを見つけることができますが、バックグラウンド処理を行う方法はAndroid指向であり、たとえば、RSが実際にバックグラウンドで何かを行っていることをユーザーに伝えることができます。ボレーには難しい(実際にはまったくそうではない)。 結局、2つのライブラリをマイニングして、それらが非常に似ていることがわかりますが、バックグラウンド処理の方法はAndroid指向です。たとえば、RSが実際にバックグラウンドで何かを実行していることをユーザーに伝えることができます。ボレーするのは難しいです(実際はそうではありません)。
  • RoboSpiceとvolleyはどちらも、優先順位付け、再試行ポリシー、リクエストのキャンセルなどの優れた機能を提供します。 RoboSpiceとVolleyはどちらも、優先順位付け、再試行戦略、キャンセルのリクエストなどの優れた機能を提供します。 しかし、RSはさらに多くの機能を提供します。キャッシュ管理、リクエストの集約、保留中のリクエストへの再プラグイン、サーバーヘッダーに依存せずにキャッシュの有効期限を処理するなど、より多くの機能を備えた、より高度なキャッシュです。 ただし、RSはより多くの機能を提供します。キャッシュ管理、要求の集約、および保留中の要求の再挿入やサーバーヘッダーの待機に依存しないキャッシュの有効期限の処理などのより多くの機能を備えた、より高度なキャッシュです。
  • RoboSpiceはUIスレッドの外でより多くのことを行います:ボレーはメインスレッドでPOJOを逆シリアル化しますが、これは私の心には恐ろしいことです。 RoboSpiceはUIスレッドの外部でより多くの操作を実行します。ボレーはメインスレッドでPOJOを逆シリアル化しますが、これはひどい意見です。 RSを使用すると、アプリの応答性が向上します。 RSを使用すると、アプリケーションの応答が速くなります。
  • 速度に関しては、間違いなくメトリックが必要です。 スピードに関しては、絶対に指標が必要です。 RSは今、超高速になっていますが、それでもここに置くべき数字はありません。 RSは現在急速に発展していますが、まだ数字はありません。 ボレーは理論的には少し高速になるはずですが、RSは今では大規模に並列化されています...誰が知っていますか? 理論的には、ボレーはより高速であるはずですが、RSは超並列になりました...誰が知っていますか?
  • RoboSpiceは、拡張機能との幅広い互換性範囲を提供します。 RoboSpiceは、拡張を通じて幅広い互換性を提供します。 okhttp、retrofit、ormlite(beta)、jackson、jackson2、gson、xmlシリアライザー、google httpクライアント、springandroidなどで使用できます。 okhttp、retrofit、ormlite(beta)、jackson、jackson2、gson、xmlシリアライザー、google httpクライアント、springandroidなどと組み合わせて使用​​できます。 ボレーはokhttpで使用でき、gsonを使用します。 ボレーはokhttpで使用でき、gsonを使用します。 それでおしまい。 それでおしまい。
  • ボレーはRSよりも多くのUIシュガーを提供します。 バレーボールはRSよりも多くのUIシュガーを提供します。 VolleyはNetworkImageViewを提供し、RSはspicelistアダプターを提供します。 VolleyはNetworkImageViewを提供し、RSはspicelistアダプターを提供します。 機能に関しては、それほど遠くはありませんが、ボレーはこのトピックに関してより進んでいると思います。 機能面ではそれほど遠くはありませんが、ボレーはこのトピックに関してより進んでいると思います。
  • RoboSpiceの最初のリリース以降、200を超えるバグが解決されています。 RoboSpiceが最初にリリースされて以来、200を超えるエラーが解決されました。 非常に堅牢で、本番環境で頻繁に使用されます。 それは非常に強力であり、生産で大量に使用されます。 ボレーは成熟度が低いですが、そのユーザーベースは急速に成長しているはずです(グーグル効果)。 ボレーはまだ成熟していませんが、そのユーザーベースは急速に成長するはずです(グーグル効果)。
  • RoboSpiceはMavenCentralで利用できます。 RoboSpiceはMavenCentralで利用できます。 ボレーを見つけるのは難しいです) ボレーを見つけるのは難しいです)

#5階

非同期HTTPクライアントloopjとVolley 非同期HTTPクライアントloopjとVolley

私のプロジェクトの詳細は、1〜5分ごとの小さなHTTPRESTリクエストです。 私のプロジェクトの詳細は、1〜5分ごとに小さなHTTPRESTリクエストを送信することです。

非同期HTTPクライアント(1.4.1)を長時間使用しています。 私は長い間非同期HTTPクライアント(1.4.1)を使用してきました。 パフォーマンスは、バニラApachehttpClientまたはHTTPURL接続を使用するよりも優れています。 通常のApachehttpClientまたはHTTPURL接続を使用する場合と比較して、パフォーマンスが向上します。 とにかく、ライブラリの新しいバージョンは私のために機能していません:コールバックのライブラリの例外間カットチェーン。 いずれにせよ、新しいバージョンのライブラリは私には機能しません。ライブラリ間の異常なカットバックコールバックチェーンです。

すべての答えを読んだことで、私は何か新しいことに挑戦するようになりました。 すべての答えを読んだことで、私は何か新しいことを試みるようになりました。 VolleyHTTPライブラリを選択しました。 VolleyHTTPライブラリを選択しました。

しばらく使用した後、テストを行わなくても、応答時間は1.5倍、2倍のボレーにまで低下していることがはっきりとわかります。 一定期間使用した後、テストしなくても、応答時間が1.5倍と2倍のボレーに短縮されていることがはっきりとわかります。

たぶんレトロフィットは非同期HTTPクライアントよりも優れていますか? たぶんレトロフィットは非同期HTTPクライアントよりも優れていますか? 私はそれを試す必要があります。 私はそれを試す必要があります。 しかし、ボレーは私には向いていないと確信しています。 しかし、ボレーは私には向いていないと確信しています。


#6階

ボレーでの私の経験からの議論に少し追加するだけです: バレーボールの仕事での私の経験を増やすためだけに:

  1. Volleyは、ストリーミングのアップロードまたはダウンロードをいかなる意味でも処理しません。 Volleyは、ストリーミングのアップロードまたはダウンロードを一切処理しません。 つまり、リクエスト本文全体がメモリ内にある必要があり、OutputStreamを使用することはできません。リクエスト本文を基になるソケットに書き込むため、またはInputStreamを使用することもできません基本的なHttpURLConnectionとして応答本文を読み取るします。 つまり、リクエスト本文全体がメモリ内にある必要があり、基本的なものにすることはできませんHttpURLConnection同じ用途OutputStreamリクエスト本文を基本ソケットに書き込む、使用することはできませんInputStream読み取りレスポンスボディ。 したがって、ボレーは大きなファイルをアップロードまたはダウンロードするのに適していません。 したがって、ボレーは大きなファイルをアップロードまたはダウンロードするのに適していません。 あなたの要求と応答は小さいはずです。 あなたの要求と応答は小さいはずです。 これは、私が個人的に遭遇したボレーの最大の制限の1つです。 これは私が個人的に遭遇したバレーボールスポーツの最大の制限の1つです。 OkHttpには、ストリームを操作するためのインターフェイスがあります。 その値に関して、OkHttpにはストリームを処理するためのインターフェースがあります。

  2. 公式のドキュメントがないのは面倒ですが、ソースコードを読むことで回避できました。これは非常に簡単です。 わかりやすいソースコードを読むことでこの問題を解決することができましたが、公式のドキュメントがないのは面倒です。 さらに厄介なのは、私が知る限り、Volleyには公式リリースバージョンがなく、MavenまたはGradleアーティファクトがないため、依存関係として管理することは、Squareがリリースしたどのライブラリよりも頭痛の種になることです。 。 さらに厄介なことに、私が知る限り、Volleyの公式リリースはなく、MavenまたはGradleコンポーネントもありません。したがって、依存関係として管理することは、Squareでリリースされたどのライブラリよりも頭痛の種です。 リポジトリのクローンを作成し、jarを作成するだけで、自分で作業できます。 リポジトリライブラリのクローンを作成し、jarを作成するだけで、自分で作業を行うことができます。 バグ修正をお探しですか? バグ修正をお探しですか? フェッチして、そこにあることを願っています。 入手して、そこにあることを願っています。 あなたも他のものを手に入れるかもしれません あなたはまた何か他のものを手に入れるかもしれません。 文書化されません。 記録されません。 私の意見では、これは事実上、コードベースが適度にアクティブであっても、Volleyがサポートされていないサードパーティライブラリであることを意味します。 コードベースは非常にアクティブですが、これは実際にはVolleyがサポートされていないサードパーティライブラリであることを意味していると思います。 買い手は注意してください。 購入者は自己責任で行ってください。

  3. ちなみに、Content-Typeをクラス/リクエストタイプ(JsonObjectRequest、ImageRequestなど)に関連付けると、Volleyの既存のリクエストタイプ階層に関連付けられるため、呼び出しコードの柔軟性が少し低下します。 フォームとして、Content-Typeをクラス/リクエストタイプ(JsonObjectRequest、ImageRequestなど)にバインドするのは少し厄介です。また、Volleyの既存のリクエストタイプ階層にバインドするため、コードを呼び出す柔軟性がわずかに低下します。 Content-Typeを他のヘッダーと同じようにヘッダーとして設定するだけの簡単さが好きです(Volleyではこれを行わないでください。2つのContent-Typeヘッダーになってしまいます!)。 Content-Typeをヘッダーとして直接設定するという単純さが好きです(ちなみに、これをVolleyに行わないでください。2つのContent-Typeヘッダーになってしまいます!)。 それは私の個人的な意見ですが、回避することができます。 しかし、それは私の個人的な意見であり、解決することができます。

それは、ボレーがいくつかの便利な機能を持っていないということではありません。 これは、ボレーにいくつかの便利な機能がないということではありません。 確かにそうです。 もちろんできます。 簡単にカスタマイズ可能な再試行ポリシー、透過的なキャッシュ、キャンセルAPI、リクエストのスケジューリングと同時接続のサポートは優れた機能です。 簡単にカスタマイズできる再試行戦略、透過的なキャッシュ、キャンセルAPI、リクエストのスケジューリングと同時接続のサポートはすべて優れた機能です。 これはすべてのHTTPユースケースを対象としているわけではなく(上記の項目1を参照)、アプリでVolleyを本番環境で使用することにはいくつかの頭痛の種があることを知っておいてください(項目2)。 すべてのHTTPユースケースに適しているわけではなく(上記の項目1を参照)、アプリケーションでVolleyを本番環境に移行するときにいくつかの問題が発生することを知っておいてください(項目2)。