您的位置:首页 > 理论基础 > 计算机网络

volley框架再识

2016-07-30 00:01 399 查看
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;
@Override
protected 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,第三张是资源请求错误是给的图片资源ID
imagelistener=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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  volley 图片下载 网络