如何在Android开发中高效使用Volley网络框架
Posted TaylorHere
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Android开发中高效使用Volley网络框架相关的知识,希望对你有一定的参考价值。
如何在android开发中高效使用Volley网络框架
什么是Volley
Volley是Google在2013年推出的一个网络框架,他适合做短小的数据拉取和图像拉取与填充
准备
如果使用Android Studio作为开发环境
1. 下载Volley.jar
2. 将Volley.jar放在工程目录的libs文件夹中
3. 配置Gradle,代码如下:
denpendencies
compile fileTree(dir: 'libs', include: ['*.jar'])
compile files('libs/volley.jar')
使用
在整个Volley框架中,有一个叫做RequestQueue的东西会负责请求的发送等等,google官方认为一个APP只需一个Queue就行。
所以我一般会把Queue的引用写在Application类里面,以供全局使用。
获取RequestQueue的代码:
RequestQueue = Volley.newRequestQueue(mContext);
有了Queue之后我们就把重心放到Request上面。
Volley提供了JsonObjectRequest、JsonArrayRequest、StringRequest等Request形式。
1. JsonObjectRequest:返回JSON对象。
2. JsonArrayRequest:返回JsonArray。
3. StringRequest:返回String,这样可以自己处理数据,更加灵活,另外可以继承Request自定义Request。
Volley支持http的GET、POST、PUT、DELETE等方法。
使用GET request的方法:
String url="http://www.baidu.com";
JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET,url,null,new Response.Listener<JSONObject>()
@Override
public void onResponse(JSONObject response)
//在这里处理正确返回的数据
Log.i("TAG",response.toString());
,new Response.ErrorListener()
@Override
public void onErrorResponse(VolleyError error)
//在这里处理错误的返回数据
);
mRequestQueue.add(request);
mRequestQueue.start();
使用POST request的方法:
url = "http://httpbin.org/post";
StringRequest postRequest = new StringRequest(Request.Method.POST, url,
new Response.Listener<String>()
@Override
public void onResponse(String response)
// response
Log.d("Response", response);
,
new Response.ErrorListener()
@Override
public void onErrorResponse(VolleyError error)
// error
Log.d("Error.Response", response);
)
@Override
protected Map<String, String> getParams()
Map<String, String> params = new HashMap<String, String>();
params.put("name", "Alif");
params.put("domain", "http://itsalif.info");
return params;
;
queue.add(postRequest);
使用PUT request的方法
url = "http://httpbin.org/put";
StringRequest putRequest = new StringRequest(Request.Method.PUT, url,
new Response.Listener<String>()
@Override
public void onResponse(String response)
// response
Log.d("Response", response);
,
new Response.ErrorListener()
@Override
public void onErrorResponse(VolleyError error)
// error
Log.d("Error.Response", response);
)
@Override
protected Map<String, String> getParams()
Map<String, String> params = new HashMap<String, String> ();
params.put("name", "Alif");
params.put("domain", "http://itsalif.info");
return params;
;
queue.add(putRequest);
使用DELTE request的方法:
url = "http://httpbin.org/delete";
StringRequest dr = new StringRequest(Request.Method.DELETE, url,
new Response.Listener<String>()
@Override
public void onResponse(String response)
// response
Toast.makeText($this, response, Toast.LENGTH_LONG).show();
,
new Response.ErrorListener()
@Override
public void onErrorResponse(VolleyError error)
// error.
);
queue.add(dr);
建议在onStop()中取消对列里面的请求:
@Override
protected void onStop()
super.onStop();
mRequestQueue.cancelAll(this);
以上是关于数据获取的一些代码,接下来我们看看好用的 NetworkImageView
在布局中添加一个NetwokekImageView
在java代码中获取这个view,然后使用它的
setImageUrl(String Url,,ImageLoader imageLoader)
为图像设置一个url和一个imageLoader,图片便会下载。
那么这里的imageLoader是什么?
RequestQueue mRequestQueue = Volley.newRequestQueue(this);
final LruCache<String, Bitmap> mImageCache = new LruCache<String, Bitmap>(
20);
ImageCache imageCache = new ImageCache()
@Override
public void putBitmap(String key, Bitmap value)
mImageCache.put(key, value);
@Override
public Bitmap getBitmap(String key)
return mImageCache.get(key);
;
ImageLoader mImageLoader = new ImageLoader(mRequestQueue, imageCache);
如上便是一个ImageLoader,他负责加载和缓存image。
volley还有很多有用的功能,欢迎探索。
尾声
在实际项目中,我会把volley为Model层的重要功能,在Model接受到来着P层的url请求后,在model层生成request然后装填到queue并在返回方法里,用FastJson进行Json数据解析将json数据解析为bean,并将解析后到bean通过listener回调给p层进行数据到视图到填充。
参考文章:
网络通信框架Volley使用详细说明
Android Volley Tutorial – Making HTTP GET, POST, PUT
学疏才浅,请指教。
---Taylor
以上是关于如何在Android开发中高效使用Volley网络框架的主要内容,如果未能解决你的问题,请参考以下文章