2015-12-11 24 views
-1

我尝试一个接一个地执行请求而没有用户参与时遇到问题。 当运行应用程序,我可以看到这个记录Android排球多重请求。调试工作正常,运行应用程序工作不正确

Posting params: {[email protected], tag=getConnectors} 
    verifyOperation onResponse --> 1 operation 
    verifyOperation onResponse --> {"result":"85","msg":"ok, user register, your password is your number phone!"}                        
    response 1 operation is ok call -->getConnectors 
Posting params: {[email protected], tag=geinfodates} 
verifyOperation onResponse --> 2 operation 
verifyOperation onResponse -->{"result":"85","msg":"ok, user register, your password is your number phone!"} 

但当调试应用程序,为2运算的结果是正确的:

Posting params: {[email protected], tag=geinfodates} 
verifyOperation onResponse --> 2 
verifyOperation onResponse -->{"token":"xxxxxxxx"} 

我有一个singlenton类,在那里我有我的StringRequest
与不同类型的听众

void verifyOperation(final HashMap paramOperation, final int opcion,final String url) { 
      pref = new PrefManager(context); 
      String urlFinale=url; 
      StringRequest strReq = new StringRequest(Request.Method.POST, 
        urlFinale, new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) { 
switch (opcion) { 

         case 1: 
          if (operation.result >= 0) 
          break; 
         case :2 ..... 

},新Response.ErrorListener(){

 @Override 
     public void onErrorResponse(VolleyError error) { 
      Log.e(TAG, "Error: " + error.getMessage()); 
      Toast.makeText(context, 
        error.getMessage(), Toast.LENGTH_SHORT).show(); 
     } 
    }) { 

     @Override 
     protected Map<String, String> getParams() { 
      HashMap<String, String> profile = new HashMap<>(); 
      Set set = paramOperation.entrySet(); 
      Iterator iterator = set.iterator(); 
      //String number=pref.getMobileNumber(); 
      String mail = pref.getMail(); 
      switch (opcion) { 
       case 1: 
        break; 
       case 2: 
        profile = pref.getUserDetails(); 
       break; 

}

最后我stringrequest添加到我的singlenton类

// Adding request to request queue 
     MyApplication.getInstance().addToRequestQueue(strReq); 



public <T> void addToRequestQueue(Request<T> req) { 
      req.setTag(TAG); 
      req.setRetryPolicy(new DefaultRetryPolicy(
        MY_SOCKET_TIMEOUT_MS, 
        -1, //intentos 
        DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); 
      getRequestQueue().add(req); 
     } 

我使用默认参数RetryPolicy起到控制凌空请求,但总是失败。 我不明白,因为我的第二个请求的答案可能只是第一个答案,要调用第二个操作,我需要通过第一个答复 第二个调用永远不会返回与第一个相同的数据,如所见在我的调试日志中

谢谢!

回答

-1

我不理解,因为有些人给我发了反对票......

我固定我的问题。也许可以帮助我解决某人的问题。 排球有缓存 向队列添加请求时,可以禁用缓存 https://developer.android.com/intl/es/training/volley/simple.html 由于这个原因,当我调试时,我的应用程序工作正常,缓存应该被删除排除时间(1-2秒到请求),并且当我运行我的应用程序时,缓存工作并且始终返回第一个响应。 您可以禁用缓存,这是一个示例 Disable Volley cache management