2015-01-15 16 views
10

私はAndroidアプリでVolleyライブラリを使用しています。それは正常に動作しますが、OkHttpもいくつかの改善点を示しています。VolleyライブラリでOkHttpを使用する必要がありますか?

Volley.newRequestQueue(mCtx.getApplicationContext(), new OkHttpStack()); 

マイOkHttpStackクラスは次のとおりです:

public class OkHttpStack extends HurlStack { 
    private final OkUrlFactory mFactory; 

    public OkHttpStack() { 
     this(new OkHttpClient()); 
    } 

    public OkHttpStack(OkHttpClient client) { 
     if (client == null) { 
      throw new NullPointerException("Client must not be null."); 
     } 
     mFactory = new OkUrlFactory(client); 
    } 

    @Override protected HttpURLConnection createConnection(URL url) throws IOException { 
     return mFactory.open(url); 
    } 
} 

1)それは価値がある私が使用してボレーでOkHttpを統合していますか?私は目立った改善に気付きませんでしたが、それは私のサーバー上でSPDYサポートをまだ実装していないためかもしれません。

2)OkHttpによる拡張では、応答キャッシュがあります。しかし、ボレーもそうする。 https://github.com/square/okhttp/issues/680

3)また、私はVolleyの2つのRequestQueuesを使用しています.1つはImagesの場合は&、その他の場合はJSONです。両方のキューでOkHttpを使用する必要がありますか?

答えて

3

わかりません。

しかし、私は似たような立場にあり、私は「いいえ、今はありません」の側に降りています。私はいくつかのアイデアを持っていますが、私は詳しく説明します:

私の使用のためにVolleyの下でOkHttpを使用することには本当のメリットはありません。 (私が接続するHTTPSサーバはSPDYをサポートしていません。すでに接続プールを取得していて、gzipエンコーディングも信じています。そして、Volleyがそこにキャッシュを持っていることを知っています。パフォーマンスだけを傷つけることができるアプリ、私は信じています。

OkHttpには何がありますか、そのVolleyを使用するように変更することができますか、実際の接続は中断しています。これは私のアプリがたくさんのリクエストを出し、多くのリクエストをキャンセルするので、最も関心のあるものです。現在のところ、Volleyは実際に接続(またはその付近)を開くようにした要求を実際に止めるわけではなく、キャンセルしたとマークしてサーバーの応答を破棄します。

これはセマンティクスでは問題ありませんが、私の場合はパフォーマンスに重大な影響があります。私が死んで、サーバーへのリクエストの束を作り、それらの要求がタイムアウトしようとしている場合、具体的には、その時間の間に、他のキューに入れられた要求はを利用することができない、個々に時間それらのうちにバレーボールに30秒のようなものを取ります接続がタイムアウトするのを待ってプールがビジー状態であるため、ネットワーク接続に失敗しました。

だから私は、 "OkHttpStack"を書いて#cancel()イベントをOkHttpに導き、実際に接続を中止して、それが私にとって大きな勝利になると思っています。彼らはすべてのHttpURLConnectionのOkHttp実装を使用するに

FWIWは、Android 4.4搭載の携帯電話に私が見てきた、とあなたは「自由のための」前進することを取得します。

+0

実際には利点があります。デフォルトでVolleyを使用する場合、Android 4.3以降ではデフォルトでTLSを使用するように強制することはできません。カスタムスタックとしてOkHttpを使用すると、それを強制することができます。 –

8

私はこの1つのようokhttp-URLConnectionの使用していないスタックに切り替えることをお勧め - >https://goo.gl/ZZRSQ5

1)はいOkHttpはスピード、HTTP/2、SPDYのような多くの利点を持って、帯域幅を節約できます。 ..

2)私は問題がなかったです。

3)あなただけの両方のための1 com.android.volley.RequestQueueを必要としています。これを見て - >https://goo.gl/GMn3Ls

ここでOkHttp + Volley + Gsonについて書いた - >https://goo.gl/nl2DfNです。私はあなたにとって興味深いかもしれないと思う。

+0

ありがとう!素敵な記事。私は今、私のアプリでOkHttp + Volleyをしばらく使っています。うまく動作します。今私はGsonのサポートを追加しています。ところで、okhttp-urlconnectionの問題は何ですか?この利点は何ですか?https://goo.gl/ZZRSQ5 – User31689

+0

このスタックはRetrofitとよく似ていますか? –

+0

レトロフィットは、より多量のスタックです。私はあなたの質問@IgorGanaposlkyを得ることがわかりません。 – Sotti

関連する問題