web-dev-qa-db-ja.com

ボレーネットワークリクエストキューを使用するにはどうすればよいですか?

提案されているように、シングルトンとして作成したVolley Request Queueへの新しいネットワーク呼び出しを_.add(_します。しかし、私はいつもすぐにこれらのネットワーク呼び出しを.start()します。これは常に、アクティビティまたはフラグメントのアクションとして実行されます。

addメソッドは、.add(new volley request).start()のようにstartメソッドにチェーンすることもできません。

したがって、これは、ボレーがキューを処理する方法以外の場所で、ネットワークキューを実際に管理している(または管理したい)ことを前提としています。これらのものをIntentServiceに送信し、IntentServiceをリッスンしてフラグメント/アクティビティに応答を返送する必要がありますか?

7
CQM

ボレーユーザーとして、私は.start()メソッドを呼び出したことがないことをお伝えできます。キューに追加したすべてのリクエストは自動的に開始されました。あなたと同じようにシングルトンクラスを使用しました。

8
Udi Oshi

requestQueueを次のように作成する場合:

_requestQueue = Volley.newRequestQueue(mAppContext);
_

start()は必要ありません。

_Volley.RequestQueue_のドキュメントによると:「ワーカープールのデフォルトインスタンスを作成し、そのインスタンスでRequestQueue.start()を呼び出します。」

したがって、start()を自分で呼び出す必要がなかった理由がわかります。

ただし、requestQueueを次のように作成した場合( 公式リファレンス に示されているように):

_RequestQueue mRequestQueue;

// Instantiate the cache
Cache cache = new DiskBasedCache(getCacheDir(), 1024 * 1024); // 1MB cap

// Set up the network to use HttpURLConnection as the HTTP client.
Network network = new BasicNetwork(new HurlStack());

// Instantiate the RequestQueue with the cache and network.
mRequestQueue = new RequestQueue(cache, network);

// Start the queue
mRequestQueue.start();
_

start()を呼び出す必要があります。

PS:ソースコード自体で提供されているドキュメントを入手します。 IDEはそれらを簡単に抽出できます。ドキュメントが必要なメソッド/クラス名にカーソルを合わせ、CTRLキーを押します(Android-studioの場合)。

12
vedant