一尘不染

Java 我可以用拦截进行同步请求吗?

java

想象我在一个已经有后台线程的服务中。我可以在同一线程中使用Volley发出请求,以便回调同步发生吗?

这样做有两个原因:-首先,我不需要另一个线程,创建它会很浪费。-其次,如果我处于ServiceIntent中,则线程的执行将在回调之前完成,因此,我不会收到Volley的响应。我知道我可以创建自己的Service,该Service具有可以控制的Runloop线程,但是最好在volley中具有此功能。

谢谢!


阅读 384

收藏
2020-03-03

共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
}
2020-03-03