Android 使用volley过程中遇到的问题解决办法
Android使用volley过程中遇到的问题解决办法
本文主要介绍使用volley过程中遇到的问题,错误提示:
com.android.volley.NoConnectionError:java.io.InterruptedIOException”,内容加载失败,问题出在重复调用queue.start()方法。
错误提示:com.android.volley.NoConnectionError:java.io.InterruptedIOException”,然后就内容加载失败。。。、
代码如下:
privatevoidgetWxpayOrderInfo(){ StringRequeststringRequest=newStringRequest(Request.Method.POST, Url,newResponse.Listener(){ @Override publicvoidonResponse(Stringresponse){ } },newResponse.ErrorListener(){ @Override publicvoidonErrorResponse(VolleyErrorerror){ } }){ @Override protectedMap getParams() throwsAuthFailureError{ //发送请求用到的一些参数 Map params=newHashMap (); params.put("id","nameid"); returnparams; } }; stringRequest.setRetryPolicy(newDefaultRetryPolicy(10000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); queue.add(stringRequest); //queue.start();//经过反复调试错误就出在这里,注释掉这里就可以了 }
问题出在调用queue.start()方法之后,错误原因可以通过volley源文件看到,以下是volley官方文档中初始化RequestQueue的一段代码。
/** *Createsadefaultinstanceoftheworkerpoolandcalls{@linkRequestQueue#start()}onit. * *@paramcontextA{@linkContext}touseforcreatingthecachedir. *@paramstackAn{@linkHttpStack}touseforthenetwork,ornullfordefault. *@returnAstarted{@linkRequestQueue}instance. */ publicstaticRequestQueuenewRequestQueue(Contextcontext,HttpStackstack){ FilecacheDir=newFile(context.getCacheDir(),DEFAULT_CACHE_DIR); StringuserAgent="volley/0"; try{ StringpackageName=context.getPackageName(); PackageInfoinfo=context.getPackageManager().getPackageInfo(packageName,0); userAgent=packageName+"/"+info.versionCode; }catch(NameNotFoundExceptione){ } if(stack==null){ if(Build.VERSION.SDK_INT>=9){ stack=newHurlStack(); }else{ //PriortoGingerbread,HttpUrlConnectionwasunreliable. //See:http://android-developers.blogspot.com/2011/09/androids-http-clients.html stack=newHttpClientStack(AndroidHttpClient.newInstance(userAgent)); } } Networknetwork=newBasicNetwork(stack); RequestQueuequeue=newRequestQueue(newDiskBasedCache(cacheDir),network); queue.start();//这里需要注意,原来在请求初始化的时候就已经调用了start方法 returnqueue; } /** *Startsthedispatchersinthisqueue. */ publicvoidstart(){ stop();//Makesureanycurrentlyrunningdispatchersarestopped. //Createthecachedispatcherandstartit. mCacheDispatcher=newCacheDispatcher(mCacheQueue,mNetworkQueue,mCache,mDelivery); mCacheDispatcher.start(); //Createnetworkdispatchers(andcorrespondingthreads)uptothepoolsize. for(inti=0;i=0;i--){ interruptActions.get(i).run(); } } }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!