2015-09-09 46 views
0

我希望找到一個比我工作的公司所教的方法更好的處理反應的方法。如何管理具有更高可讀性的請求代碼android?

我被教導使用一個通用的HttpClient,它使用齊射來發送請求。客戶端有一個靜態方法,可以給出一個通用監聽器ResponseListener,當一個抽象響應通過時,這個監聽器會回調上下文。 ResponseListener將跟蹤所有請求「類型」。這是提供給客戶端的代碼,以便上下文可以區分請求。

有沒有其他的方式來跟蹤所有的請求代碼,而不必保留一個大目錄類型的接口文件?當你通過100個請求時,看起來非常難以理解。然後你爲客戶端的代碼編寫包裝函數,並且它也變得混亂。

HttpClient的

public static void doRequestString(final ResponseListener listener, final int type, final String url, final JSONObject postData) { 
    // Request a string response 
    StringRequest request = new StringRequest(Request.Method.GET, url, 
     new Response.Listener<String>() { 
      @Override 
      public void onResponse(String response) { 
       // Result handling 
       listener.onRequestDone(type, response); 
      } 
     }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      // Error handling 
      System.out.println("Something went wrong!"); 
      error.printStackTrace(); 

     } 
    }); 

    request.setTag(context); 
    VolleyClient.getInstance(context).getRequestQueue().add(request); 

} 

監聽

public interface ResponseListener 
{ 
    int HELLO_REQUEST = 0; 
    int GOODBYE_REQUEST = 1; 
    // every other request numbered here, so they don't conflict 

    void onRequestDone(int type, String response); 
} 

語境

public void onRequestDone(int type, String response) 
{ 
    switch(type) { 
     case Response.Listener.HELLO_REQUEST: 
      handleHello(); 
      break; 
     case Response.Listener.GOODBYE_REQUEST: 
      handleGoodbye(); 
      break; 
    } 
} 

回答

0

那麼,有沒有那麼多的選擇,是誠實的。你現在正在以集中的方式處理你的迴應。另一種選擇是將請求類型剝離爲每個請求都有一個偵聽器。這裏的主要缺點是你會得到充滿聽衆的代碼。

我建議你試着將這兩種方法結合起來,以適應你的用例。也許創建一箇中間服務層,通過它們的一些屬性來劃分你的功能(例如邏輯上 - 所有用戶請求分組在一起等等),爲每個服務公開一個監聽器並在那裏管理請求代碼。這樣你可以有一點模塊化。

+0

我開始考慮你建議的第二段。我認爲這是最有意義的。我會等待幾天,看看有沒有更好的建議出現,如果他們不這樣做,我會接受你的。 – Yoker

相關問題