volley框架再识

来源:互联网 发布:湖人三连冠科比数据 编辑:程序博客网 时间:2024/06/07 04:06
Volley是一个HTTP库,它使得在Android应用上访问网络更简单,更重要的是,更快。

Volley提供了一下的便利:

       自动的网络请求调度。
      多并发网络连接。
       设置缓存,清除缓存
      你可以取消单个请求,或者取消一些请求。
     强大的排序功能,使的从网络异步获取数据并正确填入UI变得容易。

Volley不适合繁重的下载或者流的操作,因为Volley会把解析到的响应数据保持在内存中。


先看一段下载网络图片的代码


public class MainActivity extends Activity {  String imageUrl = "http://zxpic.gtimg.com/infonew/0/wechat_pics_-6472427.jpg/640";     ImageView imView;  ImageListener imagelistener;  ImageLoader imageloaader;  RequestQueue mQueue;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);imView=(ImageView) findViewById(R.id.tests);//通过Volley的静态方法new一个请求队列,再调用请求队列(RequestQueue是由缓存和网络线程构造的)的start方法。mQueue=Volley.newRequestQueue(this);//第一个参数是存放下载图片资源的对象imview,第二个是默认的图片的资源ID,第三张是资源请求错误是给的图片资源IDimagelistener=ImageLoader.getImageListener(imView,R.drawable.ic_launcher,R.drawable.ic_launcher); //第一个参数是The RequestQueue to use for making image requests.//第二个参数是设置缓存的类   imageloaader= new ImageLoader(mQueue, new BitmapCache());   //得到图片并加载   imageloaader.get(imageUrl, imagelistener);   mQueue.start();}


得到一个RequestQueue请求队列时,就添加一个请求Request,Volley提供有三种请求的封装,一个是StringRequest,一个事ImageRequest,还有一个是JsonRequest。
最后,调用RequestQueue的start方法就可以开始一条网络请求了。
这里一个最核心的就是RequestQueue请求队列这个了。
这个请求队列是有两个东西完成,一个是cache一个network。
这个RequestQueue的构造形式有四种:除了上面这两个还有线程池数量,响应委派。
1,public RequestQueue(Cache cache, Network network, int threadPoolSize,ResponseDelivery delivery)
2, public RequestQueue(Cache cache, Network network, int threadPoolSize)
3,public RequestQueue(Cache cache, Network network)


其实Cache和Network真正的工作者还是CacheDispatcher缓存调度和NetworkDispatcher网络调度。下期再详细讲解Dispatcher。。
RequestQueue的成员方法主要有下面几个:
 public void start();//请求队列开始进行调度发vgm
 public void stop();//队列退出调度
 public Request add(Request request);//添加一个请求,通过调用start()来执行
 void finish(Request request);//这个方法应该是释放请求资源的方法
 public void cancelAll();//取消当前的请求
1.StringRequest是继承Request<String> ,对应String的ResponseListener交付请求结果。
 
public StringRequest(int method, String url, Listener<String> listener,ErrorListener errorListener)
2.JsonRequest有JsonObjectRequest和JsonArrayRequest两个子类,通过parseNetworkResponse(NetworkResponse response)来处理JsonObject和JsonArray两个不同结果。
3.ImageRequest的构造参数比较多,主要针对图片的一些处理工作。多了一个限制图片最大长宽和configOptions图片类的东西。
public ImageRequest(String url, Response.Listener<Bitmap> listener, int maxWidth, int maxHeight,Config decodeConfig, Response.ErrorListener errorListener)


0 0