如何在Android开发中高效使用Volley网络框架
来源:互联网 发布:虚拟社交网络的流行 编辑:程序博客网 时间:2024/05/19 20:43
如何在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网络框架
- Android开发:Google网络框架Volley的使用
- Android框架之网络开发框架Volley
- Android中使用Volley框架进行网络请求
- Android之Volley框架在实际开发过程中运用
- Android开发之Volley网络通信框架
- Android中 网络框架Volley的用法
- Android-网络通信框架Volley使用详解
- Android-网络通信框架Volley使用详解
- Android-网络通信框架Volley使用详解
- Android网络框架Volley的快速使用
- Android网络请求框架Volley的使用
- Android Volley网络框架的基本使用
- Android网络请求框架:Volley简单使用
- android网络请求Volley框架的使用
- Android 网络访问框架 Volley 基本使用
- Android开源:网络框架volley使用
- Android-网络通信框架Volley使用详解
- Struts2与Servlet的关系
- CentOS上JDK的安装与环境变量的配置
- 【BABY夜谈大数据】基于内容的推荐
- LeetCode. Container With Most Water
- POJ1364 King
- 如何在Android开发中高效使用Volley网络框架
- 前端组件化开发和MVC
- HD 2602 Bone Collector (0-1背包)
- 开源项目学习方法
- 返回多值
- dpkg错误解决
- <%@ include file=” ”%> 和<jsp:include page=” ” flush=”true”/> 区别
- 37.leetcode题目191: Number of 1 Bits
- 剑指offer面试题之字符串的排列