你不需要在AsyncTask上运行Volley请求。
为什么:
Volley已经在单独的线程上处理了所有与网络相关的任务。如果你仔细看库项目,你会发现它们没有使用AsyncTask,但是他们聪明地高效地处理了所有与网络相关的任务。
请查看Volley的主要包中的RequestQueue.java类。
这里我粘贴了Java文档。
编辑:
创建请求:
使用Volley进行网络通信,由RequestQueue来管理。最佳的利用方式是将RequestQueue实例化为单例模式并保持不变,从而使用它及其所有工具(尤其是缓存)。此时,您可以添加或取消请求、停止或启动请求,并访问响应缓存。
RequestQueue queue =Volley.newRequestQueue(this)
一旦RequestQueue被实例化,请求必须被形成。这可以通过使用Volley库中包含的一些“开箱即用”的请求类之一或将Volley的请求类扩展为您自己的自定义请求来完成。Volley已经包含的请求类包括String Request,JSON请求和Image Request。大多数Volley库中包含的请求类都使用像下面这样的构造函数。
传递给构造函数的参数:
RequestMethod(get、post、delete等)
JSONObject-一个可选对象,将与您的请求一起发布
ResponseListener-请求完成后数据所在的位置
ErrorListener-当请求出现问题时将告知的地方。
JsonObjectRequest request = JsonObjectRequest(Requestmethod, url, null, new ResponseListener(), new ErrorListener());
收听者将接收响应:
成功的响应监听器
private class ResponseListener implements Response.Listener{
@Override
public void onResponse(JSONObject response){
}
}
错误响应监听器
private class ErrorListener implements Response.ErrorListener{
@Override
public void onErrorResponse(VolleyError error){
}
}
最后将您的请求添加到请求队列中,剩下的所有事情 Volley 都会为您处理。
发起调用:
现在,我们已经创建了请求和响应类,可以将请求添加到队列并检索数据。 要实现这一点,我们只需将请求添加到队列即可。
queue.add(request)
接下来,响应或错误将会被传递到我们在请求中定义的响应/错误类。您可以一次向队列添加尽可能多的请求,响应将会分别传递到它们各自的响应/错误类。