gpt4 book ai didi

android - 截击同步请求永远阻塞

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:37:39 25 4
gpt4 key购买 nike

我想使用 volley 库进行同步请求,我使用了以下代码:

RequestFuture<Long> future = RequestFuture.newFuture();

AuthenticatedJsonRequest request = new AuthenticatedJsonRequest(Method.GET,ServiceUrl,null,future,future);
requestQueue.add(request);

try {

Long response = future.get();

但是代码在这里永远阻塞:

Long response = future.get();

这是我的自定义 JsonRequest

public class AuthenticatedJsonRequest extends JsonRequest<Long> {



public AuthenticatedJsonRequest(int method, String url, String requestBody, Listener<Long> listener,
ErrorListener errorListener) {
super(method, url, requestBody, listener, errorListener);
// TODO Auto-generated constructor stub
}

@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> headers = new HashMap<String, String>();
String creds = String.format("%s:%s", RestClient.UserName, RestClient.Password);
String auth = "Basic " + Base64.encodeToString(creds.getBytes(), Base64.DEFAULT);
headers.put("Authorization", auth);
return headers;
}



@Override
protected Response<Long> parseNetworkResponse(NetworkResponse response) {
try {

String jsonString =
new String(response.data, HttpHeaderParser.parseCharset(response.headers));
return Response.success(Long.valueOf(jsonString),
HttpHeaderParser.parseCacheHeaders(response));
} catch (UnsupportedEncodingException e) {
return Response.error(new ParseError(e));
}
}

我调试了 volley 代码,它在 NetworkDispatcher 中停止了

//从队列中取出一个请求。

   request = mQueue.take();

最佳答案

这个问题很旧,但是没有任何回应。

我会尝试为其他有同样问题的人写一个回复,我相信这里的问题是你从主线程运行 future ,默认情况下 volley 用户这个线程来执行回复。

Future 在他的代码中等待,如果您从主线程运行它,您将停止该线程,并且响应处理程序线程永远不会执行它,对于这个问题,它仍在永远等待。

关于android - 截击同步请求永远阻塞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21223360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com