すでにバックグラウンド スレッドがあるサービスにいるとします。コールバックが同期的に発生するように、同じスレッドで 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
}