Volley使用示例
来源:互联网 发布:企业网管软件 编辑:程序博客网 时间:2024/06/01 11:58
Application中初始化的代码:
package com.myapplication.myvolleyutil.MyVolleyUtils;import android.app.Application;/** * Created by Administrator on 2016/3/7. * 涉及全局的内容,或者多个Activity都要使用 * 1,全局变量注册 * 2,地图等第三方(多个Activity都要使用时) * 3,生命周期从app打开到退出app * <p/> * 使用步骤: * 1,继承系统里面的application * 2,在清单文件中添加name */public class MyApplication extends Application { private static MyApplication myApplication; //myApplication的开始 @Override public void onCreate() { super.onCreate(); myApplication = this;//系统的单例,不要new } public static MyApplication getMyApplication() { return myApplication; }}
MyImageCache.java中代码:
package com.myapplication.myvolleyutil.MyVolleyUtils;import android.graphics.Bitmap;import android.util.LruCache;import com.android.volley.toolbox.ImageLoader;/** * Created by Administrator on 2016/3/7. * LruCache * 最近最少使用算法 * 原理:在一定容量里面,当加入内容超过容量的时候。移除最近使用使用频率最少的资源,然后将新的资源添加进来 * 1.本身是一个链表结构 * 2.LruCache做内存缓存时,内存容量可以自己进行设定 */public class MyImageCache implements ImageLoader.ImageCache { private LruCache<String, Bitmap> lruCache; public MyImageCache() { //分配运行内存的大小,可以手动定额分配,如 int maxSize = 4 * 1024 * 1024; // 或者获取当前app总的运行内存,定比例分配,常分配1/8 int timeSize = (int) (Runtime.getRuntime().maxMemory() / 8); lruCache = new LruCache<String, Bitmap>(timeSize) { //TODO 计算放入进来的图片大小 @Override protected int sizeOf(String key, Bitmap value) { return value.getByteCount(); } }; } @Override public Bitmap getBitmap(String s) { //ToDo 从内存中拿到图片 return lruCache.get(s); } @Override public void putBitmap(String s, Bitmap bitmap) { //TODO 将图片存到内存中 lruCache.put(s, bitmap); }}
接口回调StringCallBack代码:
package com.myapplication.myvolleyutil.MyVolleyUtils;/** * Created by Administrator on 2016/3/7. */public interface StringCallBack { void getString(String str);}
VolleyUtil中的代码:
package com.myapplication.myvolleyutil.MyVolleyUtils;import android.text.TextUtils;import android.widget.ImageView;import com.android.volley.Request;import com.android.volley.RequestQueue;import com.android.volley.Response;import com.android.volley.VolleyError;import com.android.volley.toolbox.ImageLoader;import com.android.volley.toolbox.StringRequest;import com.android.volley.toolbox.Volley;import com.myapplication.myvolleyutil.R;import java.util.HashMap;/** * Created by Administrator on 2016/3/7. * 1.需要考虑哪些是重复需要写的 * 2.哪些是共有的(queue)(context是整个应用,还是某个activity中在传值) */public class VolleyUtils { private RequestQueue queue; public VolleyUtils() { queue = Volley.newRequestQueue(MyApplication.getMyApplication()); } /** * get方式网络下载字符串 * * @param path 下载路径 * @param stringCallBack 邮递员把下载的值传递出去 */ public void getString(String path, final StringCallBack stringCallBack) { StringRequest stringRequest = new StringRequest(Request.Method.GET,//请求方式 path,//下载路径 new Response.Listener<String>() {//响应成功时候的接口 @Override public void onResponse(String s) { if (!TextUtils.isEmpty(s)) { //通过接口回调把下载到的值传递出去 stringCallBack.getString(s); } } }, new Response.ErrorListener() {//响应失败时候的借口 @Override public void onErrorResponse(VolleyError volleyError) { } }); } /** * post方式网络下载字符串 * * @param postPath 下载地址 * @param map 键值对 * @param stringCallBack 邮递员接口回调,方便传值 */ public void getPostString(String postPath, HashMap<String, String> map, final StringCallBack stringCallBack) { StringRequest postRequest = new StringRequest(Request.Method.POST, postPath, new Response.Listener<String>() { @Override public void onResponse(String s) { if (!TextUtils.isEmpty(s)) { stringCallBack.getString(s); } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { } }); queue.add(postRequest); } //ImageLoader方式网络下载图片 public void getImageLoader(String imagePath, ImageView imageView) { // 1.创建一个ImageLoader对象 ImageLoader loader = new ImageLoader( queue,//参数1.请求的对列 new MyImageCache()// 参数2.缓存的接口,此处我们自定义类已经实现 ); //2.创建ImageListener对象,监视下载情况,可设置下载中图片,下载失败图片 ImageLoader.ImageListener listener = ImageLoader.getImageListener( imageView,//参数1.显示图片的控件 R.mipmap.ic_launcher,//参数2.默认下载中显示的图片 R.mipmap.ic_launcher//参数3.下载失败时候显示的图片 ); //3.调用get显示图片 loader.get(imagePath,//参数1,图片网址 listener,//参数2,监听图片下载的listener 100, 100//参数3,4,图片下载到的最大的宽高 ); }}
举例MainActivity中代码:
package com.myapplication.volly;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;import com.android.volley.AuthFailureError;import com.android.volley.Request;import com.android.volley.RequestQueue;import com.android.volley.Response;import com.android.volley.VolleyError;import com.android.volley.toolbox.JsonObjectRequest;import com.android.volley.toolbox.StringRequest;import com.android.volley.toolbox.Volley;import org.json.JSONObject;import java.util.HashMap;import java.util.Map;/** * 首先导入volley的jar包 * 网络权限 * <p/> * 网络数据请求: * 1,json字符串的请求 * 2,ImageView下载 缓存 * 3,清除缓存,终止网络请求 * <p/> * get: * 1,创建一个请求队列,建议全局只用一个 * 2,创建一个具体的Request * 3,加入队列 * <p/> * post请求步骤: * 1,创建一个请求队列,建议全局只用一个 * 2,创建一个具体的Request,重写方法getParams(); * 3,加入队列 * <p/> * JsonObjectRequest使用步骤: * 1,创建一个请求队列,建议全局只用一个 * 2,创建一个具体的Request * 3,加入队列 */public class MainActivity extends AppCompatActivity { // private String path = ""; private RequestQueue queue; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //请求队列创建 queue = Volley.newRequestQueue(this); getString(PathUtils.getList()); postString(PathUtils.postConmont()); JsonRequest(PathUtils.getList()); } private void JsonRequest(String path) { //1.请求方法2.请求目标地址3,需要上传的jsonobject对象,如果没有要上传的对象设置为null4,正确的结果响应回调5,错误的回调 JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(path, null, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject jsonObject) { } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { } }); } private void postString(String path) { StringRequest postRequest = new StringRequest(Request.Method.POST, path, new Response.Listener<String>() { @Override public void onResponse(String s) { } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { } }) { @Override protected Map<String, String> getParams() throws AuthFailureError { Map<String, String> map = new HashMap(); map.put("", ""); return super.getParams(); } }; } private void getString(String path) { //1,请求的方法 2,请求网址 3,正确响应的接口回调 4,错误响应的接口回调 StringRequest stringRequest = new StringRequest(Request.Method.GET, path, new Response.Listener<String>() { @Override public void onResponse(String s) { Log.e("===", s); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { } }); //加入队列 queue.add(stringRequest); }}
1 0
- Volley使用示例
- Android Volley入门到精通:使用Volley加载网络图片(示例,出错代码)
- Android Volley入门到精通:使用Volley加载网络图片(示例,出错代码)
- Android Volley入门到精通:使用Volley加载网络图片(示例,出错代码)
- Android Volley入门到精通:使用Volley加载网络图片(示例,出错代码)
- Volley常用方法示例
- Volley 使用
- Volley使用
- volley使用
- Volley使用
- volley使用
- Volley使用
- Volley使用
- Volley使用
- 使用 Volley
- Android Studio中使用开源库volley进行网络访问简单示例
- Android Https请求的简单使用(Volley Https请求的示例)
- Android Https请求的简单使用(Volley Https请求的示例)
- countingBits
- 栈、堆栈、堆、队列,它们之间的关系
- Java - Socket
- S3:VB之15个数的排序(简化版)
- viewpagerd的setOnPageChangeListener()方法过时解决方法
- Volley使用示例
- Struts1与Struts2有哪些区别?
- iOS创建浮动按钮,点击按钮“置顶”
- linux命令--netstat
- 滑动窗口的最大值
- hdu5379(树形dp)
- activiti_二_HelloWprld(非web工程)
- coursera机器学习技法笔记(1-4)——Support Vector Machine
- C++第2次实验作业