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提供了一下的便利:
自动的网络请求调度。
多并发网络连接。
设置缓存,清除缓存
你可以取消单个请求,或者取消一些请求。
强大的排序功能,使的从网络异步获取数据并正确填入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)