android – 凌空同步请求永远阻止

我想使用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));
            }
    }

我调试了凌空代码,它在Networkdispatcher中停止

//从队列中获取请求.

request = mQueue.take();

解决方法

这个问题很老,但是没有任何回应.

我会尝试为其他人写一个响应有同样的问题,我相信这里的问题是你从主线程运行未来,并且用户线程这个线程执行响应.

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

相关文章

这篇“android轻量级无侵入式管理数据库自动升级组件怎么实现...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的...
这篇文章主要介绍“Android岛屿数量算法怎么使用”的相关知识...
本篇内容主要讲解“Android如何开发MQTT协议的模型及通信”,...
本文小编为大家详细介绍“Android数据压缩的方法是什么”,内...