使用Volley传输网络数据

介绍:Volley是一个HTTP库,使Android应用程序变得更加容易,最重要的是,网络速度更快。并且是开源的。Volley有以下特点:*自动网络请求调度*多个并发的网络连接*透明的磁盘和内存响应缓存与标准HTTP缓存一致性。*支持请求优先级。*取消请求API。你可以取消一个请求,或者你可以设定取消请求的块或范围。*易于定制,例如,重试和补偿。*订制你异步从网络获取的数据,以便以填充UI*调试和跟踪工具。

*RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。Volley 不适合大型下载或流媒体业务,因为Volley 在内存中保存所有响应。对于大型下载操作,考虑使用另一种像DownloadManager。

Volley库的核心是在开放AOSP库开发框架, 在Volley 的 “toolbox” 包含请求调度主要管道以及一套普遍适用的实用程序”。

下载

添加Volley 到您的项目的最简单方法是克隆Volley 存储库并将它设置为一个library项目:

通过git :

git clone https://android.googlesource.com/platform/frameworks/volley下载源代码,导入到你的应用程序项目中作为一个Android library项目(如管理项目从Eclipse ADT所述,如果你使用Eclipse)或使用volley.jar文件。教程1.发送一个简单的请求学习如何发送一个简单的请求使用Volley 的默认行为,以及如何取消请求。在高版本别上,通过Volley创建一个RequestQueue,并请求对象。RequestQueue管理工作线程上的网络操作,读取或写入缓存,并解析响应。请求做解析原始响应和Volley将解析后的结果返回给主线程这节课描述了如何使用Volley发送一个请求。Volley.newRequestQueue()方法,建立了RequestQueue给你。在下一个课,建立RequestQueue,如何设置RequestQueue。这节课还描述了如何添加一个请求到RequestQueue,和取消一个请求。1.1 添加网络权限使用Volley,您必须添加android.permission. INTERNET 在 AndroidManifest.xml中。没有这个,你的程序不能连接到网络。1.2 使用newRequestQueueVolley 提供了一种便利方法。为你设置了一个Volley.newRequestQueue(),使用默认值,启动队列。例如:final TextView mTextView = (TextView) findViewById(R.id.text);…// Instantiate the RequestQueue.RequestQueue queue = Volley.newRequestQueue(this);String url ="";// Request a string response from the provided URL.StringRequest stringRequest = new StringRequest(Request.Method.GET, url,new Response.Listener<String>() {@Overridepublic void onResponse(String response) {// Display the first 500 characters of the response string.mTextView.setText("Response is: "+ response.substring(0,500));}}, new Response.ErrorListener() {@Overridepublic void onErrorResponse(VolleyError error) {mTextView.setText("That didn't work!");}});// Add the request to the RequestQueue.queue.add(stringRequest);Volley 总是在主线程传递结果。运行在主线程与接收的数据方便填充UI控件,您可以自由地修改UI控件直接从您的响应处理程序,但它是尤其重要的许多重要的语义提供的库,尤其是取消请求。1.3 发送一个请求发送一个请求,只需建立一个RequestQueue,并使用add()将它添加到RequestQueue,如上所示。一旦你添加请求,它穿过管道维修,有其原始响应解析和交付。当您调用add(),Volley 运行一个缓存处理线程和一个网络调度线程池。当你添加一个请求队列:如果请求存在缓存中,缓存的响应结果将返回给主线程。如果请求不能从缓存获取,它被放在网络队列。第一个可用的网络线程从队列中获得请求,执行HTTP事务,响应工作线程,将响应写入缓存,解析过的响应交付给主线程。注意,耗时的操作,比如阻塞I / O和解析/解码工作线程上执行。您可以从任何线程添加一个请求,但反应总是在主线程传递。下图说明了请求的生命周期:

1.4 取消请求取消请求,调用request.cancel()。一旦取消,Volley 保证你的响应处理程序永远不会被调用。这意味着你可以取消你所有的挂起(pending)的请求在Activity的onStop()方法,你不必检查getActivity()== null 来回收响应处理程序,是否onSaveInstanceState()已经被调用,或其他defensive boilerplate。利用这种行为,为了能够取消他们在适当的时候,你通常需要跟踪所有动态请求。有一个简单的办法:你为每个请求设置一个tag。然后,您可以使用这个标记提供取消的请求范围。例如,您可以将你的所有请求标记为他们所在的Activity,并在onStop()方法中调用requestQueue.cancelAll(this)。同样,在 ViewPager Tab 中,你可以标记所有缩略图请求与各自的 Tab : 在 Tab 消失时 cancel()这里是一个例子,它使用一个字符串值的tag:

任何的限制,都是从自己的内心开始的。

使用Volley传输网络数据

相关文章:

你感兴趣的文章:

标签云: