做门窗的 在哪个网站跑业务跑业务,搜索引擎大全网站,可以登录国外网站吗,上海外贸seo推广一、概览 Volley 具有以下优势#xff1a; 自动网络请求调度。 多个并发网络连接。 透明磁盘和具有标准 HTTP 缓存一致性的内存响应缓存。 支持请求优先级。 取消请求 API。您可以取消单个请求#xff0c;也可以设置要取消的请求的时间段或范围。 可轻松自定义#xff… 一、概览 Volley 具有以下优势 自动网络请求调度。 多个并发网络连接。 透明磁盘和具有标准 HTTP 缓存一致性的内存响应缓存。 支持请求优先级。 取消请求 API。您可以取消单个请求也可以设置要取消的请求的时间段或范围。 可轻松自定义例如自定义重试和退避时间。 强大的排序功能让您可以轻松使用从网络异步提取的数据正确填充界面。 调试和跟踪工具。
Volley 不适用于下载大量内容的操作或流式传输操作因为在解析过程中Volley 会将所有响应存储在内存中。对于下载大量内容的操作请考虑使用 DownloadManager 等替代方法。
二、请求处理
2.1 发送请求
大体上讲您可以通过创建 RequestQueue 并向其传递 Request 对象以使用 Volley。RequestQueue 管理用于运行网络操作、向缓存读写数据以及解析响应的工作器线程。请求负责解析原始响应而 Volley 负责将已解析的响应调度回主线程以供传送。
Volley 始终在主线程上传送已解析的响应。在主线程上运行便于使用接收的数据填充界面控件因为您可以直接从响应处理程序随意修改界面控件。对于库提供的许多重要语义特别是与取消请求相关的语义来说这尤为重要。 final TextView textView (TextView) findViewById(R.id.text);// ...// Instantiate the RequestQueue.RequestQueue queue Volley.newRequestQueue(this);String url http://www.google.com;// Request a string response from the provided URL.StringRequest stringRequest new StringRequest(Request.Method.GET, url,new Response.ListenerString() {Overridepublic void onResponse(String response) {// Display the first 500 characters of the response string.textView.setText(Response is: response.substring(0,500));}}, new Response.ErrorListener() {Overridepublic void onErrorResponse(VolleyError error) {textView.setText(That didnt work!);}});// Add the request to the RequestQueue.queue.add(stringRequest);
调用 add() 时Volley 会运行一个缓存处理线程和一个网络调度线程池。将请求添加到队列后缓存线程会拾取该请求并对其进行分类如果该请求可以通过缓存处理系统会在缓存线程上解析缓存的响应并在主线程上传送解析后的响应。如果该请求无法通过缓存处理则系统会将其放置到网络队列中。第一个可用的网络线程会从队列中获取该请求执行 HTTP 事务在工作器线程上解析响应将响应写入缓存然后将解析后的响应发送回主线程以供传送。
请注意阻塞 I/O 和解析/解码等开销大的操作都是在工作器线程上完成的。您可以添加来自任意线程的请求但响应始终会在主线程上传送。 2.2 取消请求
需取消请求 Request 对象上调用 cancel()。取消请求后Volley 可以确保您的响应处理程序永远不会被调用。 一个标记对象与每个请求相关联。然后使用该标记提供要取消的请求范围的所有请求。 public static final String TAG MyTag;StringRequest stringRequest; // Assume this exists.RequestQueue requestQueue; // Assume this exists.// Set the tag on the request.stringRequest.setTag(TAG);// Add the request to the RequestQueue.requestQueue.add(stringRequest);Overrideprotected void onStop () {super.onStop();if (requestQueue ! null) {requestQueue.cancelAll(TAG);}}