2016-12-13 173 views
1

我对使用android studio很陌生。我的问题是,如何将异步响应更改为同步响应。我目前使用排球库从JSON格式的数据库返回数据。如何使异步响应成为同步响应(Java:Android Studio)

我遇到的问题是,将该数据表示为图形格式。你看,由于我的代码的结构,编译器等待响应(实际上是从我的数据库发送到android studio的数据),但随着它的等待,编译器会转到代码的其他部分创建一个图并将我的数据库中的数据表示到图中。

但该图是空的,因为它没有被送入任何数据,因为我们正在等待回应。

下面是代码:

private void sendRequest() { 
     System.out.println("Triggering send Request"); 
     StringRequest stringRequest = new StringRequest(JSON_URL, 
       new Response.Listener<String>() { 
        @Override 
        public void onResponse(String response) { 
         showJSON(response); 
        } 
       }, 
       new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError error) { 
         Toast.makeText(BillReport.this, error.getMessage(), Toast.LENGTH_LONG).show(); 
        } 
       }); 
     RequestQueue requestQueue = Volley.newRequestQueue(this); 
     requestQueue.add(stringRequest); 
     System.out.println("Send Request done"); 
    } 

发送请求方法的曲线图的主方法执行之前被调用。底线是,我需要弄清楚如何能够立即响应,而不是等待响应。

感谢您花时间阅读本文!

+0

将你的“图的实现”代码放在'showJSON()'中,以便在你有数据时执行它。 – CommonsWare

+0

@CommonsWare谢谢!我这样做的唯一问题是它看起来非常混乱。我正在更加努力地保持线程运行时间更长,足够长以检索响应。 – HorribleCoder

回答

0

您将不得不等待响应显示图中的值。如果服务器数据预计不会改变,您可以缓存数据并使用它。你可以有一个进度条,它将在检索数据时旋转。这是标准做法。