volley的使用
来源:互联网 发布:货币资金管理优化论文 编辑:程序博客网 时间:2024/05/17 03:39
Volley
Volley适合那些数据量不大,但频繁访问网络的操作,但对于下载文件则表现的很差
RequestQueue mQueue = Volley.newRequestQueue(context);
RequestQueue是一个请求队列的对象,它可以缓存所有的Http请求,按照一定的算法并发的发出这些请求,内部的设计非常适合高并发,因此
不用没一次Http请求就创建一个RequestQueue对象,每一个需要和网络交互的Activity中创建一个RequestQueue对象就足够了
StringRequest
Get请求:
00001. StringRequest stringRequest = new StringRequest("http://www.baidu.com",
00002. new Response.Listener<String>() {
00003. @Override
00004. public void onResponse(String response) {
00005. Log.d("TAG", response);
00006. }
00007. }, new Response.ErrorListener() {
00008. @Override
00009. public void onErrorResponse(VolleyError error) {
00010. Log.e("TAG", error.getMessage(), error);
00011. }
00012. });
将stringRequest对象添加到RequestQueue对象中:mQueue.add(strigRequest);
Post请求: 匿名类StringRequest中重写getParams方法
00001. StringRequest stringRequest = new StringRequest(Method.POST, url, listener, errorListener) {
00002. @Override
00003. protected Map<String, String> getParams() throws AuthFailureError {
00004. Map<String, String> map = new HashMap<String, String>();
00005. map.put("params1", "value1");
00006. map.put("params2", "value2");
00007. return map;
00008. }
00009. };
JsonRequest
00001. JsonObjectRequest jsonObjectRequest = new JsonObjectRequest("http://m.weather.com.cn/data/101010100.html", null,
00002. new Response.Listener<JSONObject>() {
00003. @Override
00004. public void onResponse(JSONObject response) {
00005. Log.d("TAG", response.toString());
00006. }
00007. }, new Response.ErrorListener() {
00008. @Override
00009. public void onErrorResponse(VolleyError error) {
00010. Log.e("TAG", error.getMessage(), error);
00011. }
00012. });
ImageRequest
00001. ImageRequest imageRequest = new ImageRequest(
00002. "http://developer.android.com/images/home/aw_dac.png",
00003. new Response.Listener<Bitmap>() {
00004. @Override
00005. public void onResponse(Bitmap response) {
00006. imageView.setImageBitmap(response);
00007. }
00008. }, 0, 0, Config.RGB_565, new Response.ErrorListener() {
00009. @Override
00010. public void onErrorResponse(VolleyError error) {
00011. imageView.setImageResource(R.drawable.default_image);
00012. }
00013. });
第三,四个参数指定允许的图片的最大宽度和最大高度,0表示不管图片多大都不会压缩,第五个参数为图片的颜色属性,Config.RGB_8888能展现最好的像素,每个像素点占4个
字节,Config.RGB_565,每个像素占2个字节
将请求添加到请求对象mQueue中
ImageLoader
内部也是使用ImageRequest对象,但比ImageRequest更高效,它可以过滤掉重复的链接,避免重复发送请求
00001. ImageLoader imageLoader = new ImageLoader(mQueue, new ImageCache() { ------第一个为RequestQueue对象,第二个为ImageCache对象
00002. @Override
00003. public void putBitmap(String url, Bitmap bitmap) {
00004. }
00005.
00006. @Override
00007. public Bitmap getBitmap(String url) {
00008. return null;
00009. }
00010. });
00001. ImageListener listener = ImageLoader.getImageListener(imageView,
00002. R.drawable.default_image, R.drawable.failed_image); ----第一张为加载时的图片,第二张为加载失败时的图片
00003.
00004.
00005. imageLoader.get("http://img.my.csdn.net/uploads/201404/13/1397393290_5765.jpeg",
00001. listener, 200, 200); ----也可不指定图片的宽高
ImageLoader的第二个参数
00001. public class BitmapCache implements ImageCache {
00002.
00003. private LruCache<String, Bitmap> mCache;
00004.
00005. public BitmapCache() {
00006. int maxSize = 10 * 1024 * 1024;
00007. mCache = new LruCache<String, Bitmap>(maxSize) {
00008. @Override
00009. protected int sizeOf(String key, Bitmap bitmap) {
00010. return bitmap.getRowBytes() * bitmap.getHeight();
00011. }
00012. };
00013. }
00014.
00015. @Override
00016. public Bitmap getBitmap(String url) {
00017. return mCache.get(url);
00018. }
00019.
00020. @Override
00021. public void putBitmap(String url, Bitmap bitmap) {
00022. mCache.put(url, bitmap);
00023. }
00024.
00025. }
NetworkImageView
00001. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
00002. android:layout_width="fill_parent"
00003. android:layout_height="fill_parent"
00004. android:orientation="vertical" >
00005.
00006. <Button
00007. android:id="@+id/button"
00008. android:layout_width="wrap_content"
00009. android:layout_height="wrap_content"
00010. android:text="Send Request" />
00011.
00012. <com.android.volley.toolbox.NetworkImageView
00013. android:id="@+id/network_image_view"
00014. android:layout_width="200dp"
00015. android:layout_height="200dp"
00016. android:layout_gravity="center_horizontal"
00017. />
00018.
00001. networkImageView = (NetworkImageView) findViewById(R.id.network_image_view);
00019.
00020. </LinearLayout>
00001. networkImageView.setDefaultImageResId(R.drawable.default_image);
00002. networkImageView.setErrorImageResId(R.drawable.failed_image);
00003. networkImageView.setImageUrl("http://img.my.csdn.net/uploads/201404/13/1397393290_5765.jpeg",
00004. imageLoader);
00021.
- Volley的初步使用
- Volley框架的使用
- volley的详细使用
- volley的使用
- Volley的使用详解
- volley的简单使用
- Volley的使用笔记
- Volley 使用的缓存
- Volley框架的使用
- Volley的使用
- Volley的使用
- Volley的基本使用
- Volley框架的使用
- Volley框架的使用
- volley的使用
- Volley框架的使用
- Volley的基本使用
- Volley的简单使用
- if else 应用之经典例题判断能否构成三角形并输出面积
- Android RecyclerView点击事件与长按事件
- 【微信开发】-发送位置进行普通IP定位,主要代码在private function receiveLocation($object)
- Day22:holiday
- QT5(4)代码实现应用及信号槽实例
- volley的使用
- 洛谷 P1594 护卫队
- PHP招聘常见要求
- 微信小程序学习(1)_微信小程序简介
- 物品的名字、品牌的认识
- Python.Mayavi -- Python三维图表绘制
- 51单片机最小系统原理图
- object c son字符串的解析
- Ubuntu下使用CLion开发cocos2dx