pmb*_*pmb 45 android android-networking android-volley
我读了一篇关于Volley的帖子,我知道这是一个很棒的网络库.但我无法理解一件事.
所有请求都是异步任务?
当我想使用Volley发送asyncTask请求时,我是否需要在AsyncTask中输入Volley请求?或者如果它已经是AsyncTask请求,我应该调用Volley Request吗?
private class MyClass extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
// do Volley request
}
}
Run Code Online (Sandbox Code Playgroud)
这是正确的方法吗?
Gru*_*Gru 60
您不需要在AsyncTask上运行Volley请求.
为什么:
他们在单独的线程上管理所有网络相关任务.如果仔细观察库项目,他们就不会想象AsyncTask.但他们能够有效地智能地处理所有与网络相关的任务.
检查Volley主包中的RequestQueue.java类
我在这里粘贴java doc.
/**
* A request dispatch queue with a thread pool of dispatchers.
*
* Calling {@link #add(Request)} will enqueue the given Request for dispatch,
* resolving from either cache or network on a worker thread, and then delivering
* a parsed response on the main thread.
*/
Run Code Online (Sandbox Code Playgroud)
编辑:
形成请求:
使用Volley,网络通信由RequestQueue管理.使用RequestQueue及其所有工具(尤其是缓存)的最佳方法是将其实例化一次并将其作为单例保留.此时,您可以添加或取消请求,停止或启动请求,以及访问响应缓存.
RequestQueue queue =Volley.newRequestQueue(this);
Run Code Online (Sandbox Code Playgroud)
一旦RequestQueue被实例化,就必须形成一个请求.这可以通过Volley Library中包含的几个不同的"开箱即用"请求类或将Volley的请求类扩展到您自己的自定义请求中来完成.已包含在Volley中的请求类是String请求,JSON请求和图像请求.Volley库中包含的大多数请求类都使用类似下面的构造函数.
传递给构造函数的参数:
RequestMethod(get,post,delete等) JSONObject - 将随您的请求一起发布的可选对象 ResponseListener - 请求完成后您的数据将在哪里 ErrorListener - 当您的请求出现问题时会告诉您什么.
JsonObjectRequest request = JsonObjectRequest(Requestmethod, url, null, new ResponseListener(), new ErrorListener());
Run Code Online (Sandbox Code Playgroud)
收到回复的列表:
成功的响应侦听器
private class ResponseListener implements Response.Listener{
@Override
public void onResponse(JSONObject response){
}
}
Run Code Online (Sandbox Code Playgroud)
错误响应侦听器
private class ErrorListener implements Response.ErrorListener{
@Override
public void onErrorResponse(VolleyError error){
}
}
Run Code Online (Sandbox Code Playgroud)
最后将您的请求添加到Request队列,Volley将为您处理的所有内容.
打电话:
现在,我们已经创建了请求和响应类,我们已准备好将请求添加到队列并检索数据.为此,我们只需将请求添加到队列中.
queue.add(request);
Run Code Online (Sandbox Code Playgroud)
然后,响应或错误将传递给我们在请求中定义的响应/错误类.您可以一次向队列添加任意数量的请求,并将响应传递到各自的响应/错误类
| 归档时间: |
|
| 查看次数: |
35155 次 |
| 最近记录: |