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
protectedMapgetParams()
throwsAuthFailureError{
//发送请求用到的一些参数
Mapparams=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();
}
}
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!