2016-12-13 172 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

您將不得不等待響應顯示圖中的值。如果服務器數據預計不會改變,您可以緩存數據並使用它。你可以有一個進度條,它將在檢索數據時旋轉。這是標準做法。