2014-05-06 61 views
2

它可能是一個簡單的問題,但我在實際代碼中進行了測試,無法判斷Volley的setRetryPolicy()函數的正確行爲。任何人都請告訴我這份聲明的正確位置。是否將重試策略寫入onErrorResponse()函數或將請求輸入隊列之前?這是我的位圖圖像代碼。我希望在請求超時後重試20次。請建議我寫入重試策略的正確位置,並根據我的需要設置正確的重試策略。
{IR =新ImageRequest(URL, 新Response.Listener(){使用Volley進行Android開發時寫入的setRetryPolicy()在哪裏?

   @Override 
       public void onResponse(Bitmap response) { 
        iv.setImageBitmap(response); 


       } 
      }, 0, 0, null, new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 

        ir.setRetryPolicy(new DefaultRetryPolicy(20 * 1000, 2, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); 

       } 
      }); 

    mRequestQueue.add(ir);} 
+0

你爲什麼不檢查對象ir的類? –

回答

6

添加重試的政策,一旦你已經聲明和初始化請求對象。沒關係添加策略將您的請求之前的任何地方到

ImageRequest ir = new ImageRequest(url, new Response.Listener() { 

     @Override 
     public void onResponse(Bitmap response) { 
      iv.setImageBitmap(response); 
     } 
    }, 0, 0, null, new Response.ErrorListener() { 

     @Override 
     public void onErrorResponse(VolleyError error) { 
      //Handle errors related to Volley such as networking issues, etc 
     } 
}); 

ir.setRetryPolicy(new DefaultRetryPolicy(20 * 1000, 2, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); 
mRequestQueue.add(ir); 

另外一個需要注意的凌空隊列:本onErrorResponse()回調函數是用來處理來自排球產生的錯誤在這一點上,你的請求已經出動,並得到一些網絡錯誤,否則,您的代碼會。沒有達到這個回調函數,所以它是po intless在此函數內添加重試策略。

相關問題