Volleyで同期リクエストを行うことはできますか? 質問する

Volleyで同期リクエストを行うことはできますか? 質問する

すでにバックグラウンド スレッドがあるサービスにいるとします。コールバックが同期的に発生するように、同じスレッドで volley を使用してリクエストを実行することはできますか?

これには2つの理由があります:

  • まず、別のスレッドは必要ないので、作成するのは無駄です。
  • 2 番目に、ServiceIntent の場合、スレッドの実行はコールバックの前に終了するため、Volley からの応答はありません。制御可能な実行ループを持つスレッドを持つ独自のサービスを作成できることはわかっていますが、volley にこの機能があることが望ましいでしょう。

ベストアンサー1

Volley のクラスではそれが可能のようですRequestFuture。たとえば、同期 JSON HTTP GET リクエストを作成するには、次のようにします。

RequestFuture<JSONObject> future = RequestFuture.newFuture();
JsonObjectRequest request = new JsonObjectRequest(URL, new JSONObject(), future, future);
requestQueue.add(request);

try {
  JSONObject response = future.get(); // this will block
} catch (InterruptedException e) {
  // exception handling
} catch (ExecutionException e) {
  // exception handling
}

おすすめ記事