Volley框架封装
来源:互联网 发布:手机超市软件 编辑:程序博客网 时间:2024/05/17 22:27
Volley工具类
import android.content.Context;import android.graphics.Bitmap;import android.support.v4.util.LruCache;import com.android.volley.RequestQueue;import com.android.volley.toolbox.ImageLoader;import com.android.volley.toolbox.Volley;import java.io.IOException;import java.lang.ref.SoftReference;import java.util.HashMap;import java.util.Map;public class VolleyUtils { public static RequestQueue mQueue; public static ImageLoader mLoader; private static LruCache<String,Bitmap> lruCache;//强引用缓存,一级缓存,特点:使用最近最少使用的算法,将旧数据移除,为新数据提供空间 private static Map<String,SoftReference<Bitmap>> softCache; //软引用缓存,二级缓存 public static RequestQueue getQueue(Context context){ if(mQueue==null){ mQueue= Volley.newRequestQueue(context); // mQueue.getCache().clear(); } return mQueue; } public static ImageLoader getLoader(Context context){ if(mLoader==null){ //实例化二级缓存 softCache=new HashMap<String, SoftReference<Bitmap>>(); //实例化一级缓存 lruCache=new LruCache<String, Bitmap>(2*1024*1024){ //缓存的内存空间为2M @Override protected int sizeOf(String key, Bitmap value) { // TODO 计算存放成员的大小,返回字节大小 return value.getRowBytes()*value.getHeight(); } @Override protected void entryRemoved(boolean evicted, String key, Bitmap oldValue, Bitmap newValue) { // TODO 移除旧成员 if(evicted) //将移除的成员存放到二级缓存中 softCache.put(key, new SoftReference<Bitmap>(oldValue)); super.entryRemoved(evicted, key, oldValue, newValue); } }; mLoader=new ImageLoader(getQueue(context), new ImageLoader.ImageCache() { @Override public void putBitmap(String url, Bitmap bitmap) { // TODO 将图片存放在缓存中的方法 //将图片存放在一级缓存中 lruCache.put(url, bitmap); //将图片也存放在扩展卡 try { ImageUtils.saveImg(url, bitmap); } catch (IOException e) { e.printStackTrace(); } } @Override public Bitmap getBitmap(String url) { // TODO 从缓存中读取图片的方法 //先从一级缓存中获取 Bitmap b=lruCache.get(url); if(b==null){ //从二级缓存中读取 SoftReference<Bitmap> reference=softCache.get(url); if(reference!=null){ //二级缓存中存在 b=reference.get(); if(b!=null){ //将图片对象存放在一级缓存 lruCache.put(url, b); //从二级缓存中移除 softCache.remove(reference); } }else{ //从三级缓存中读取--扩展卡 b=ImageUtils.getImg(url); if(b!=null){ //将图片存放到一级缓存中 lruCache.put(url, b); } } } return b; } }); } return mLoader; }}Volley请求数据
Volley展示图片RequestQueue requestQueue= VolleyUtils.getQueue(this);StringRequest stringRequest=new StringRequest(StringRequest.Method.POST, url, new Response.Listener<String>() { @Override public void onResponse(String s) {try { MyLog.d("TTT", "用户答题统计返回的数据===" + s); } catch (JSONException e) { e.printStackTrace(); } }}, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { }}){ @Override protected Map<String, String> getParams() throws AuthFailureError { HashMap<String,String> map=new HashMap<>(); map.put("", ""); return map; }};requestQueue.add(stringRequest);
ImageLoader loader = VolleyUtils.getLoader(this);loader.get(url, new ImageLoader.ImageListener() { @Override public void onResponse(ImageLoader.ImageContainer imageContainer, boolean b) { Bitmap bitmap = imageContainer.getBitmap(); imageView.setImageBitmap(bitmap); if (bitmap != null && bitmap.isRecycled()) { bitmap.recycle(); } bitmap = null; } @Override public void onErrorResponse(VolleyError volleyError) { }});
1 0
- Volley框架二次封装
- Volley框架封装
- 封装volley网络框架
- Volley框架的二次封装
- Volley框架的二次封装
- 一个封装Volley框架的帮助类
- Volley框架封装Adapter用法总结
- 拒绝繁琐,Volley框架的简单封装
- android框架搭建——二次封装Volley框架
- Volley封装
- 对Volley Google I/O开源框架 进行封装
- 使用Volley框架网络请求Request<T>的封装
- android网络框架的封装——volley
- 初次接触volley网络框架,进行初步封装使用
- Android 网络通信框架Volley的二次封装
- 基于Volley封装自己的简易网络框架
- 一:网络请求框架封装范例-基于volley
- 对Android官方网络框架——volley的封装
- 关于linux编译链接库问题
- 题目:给最外层的rootview,把这个根视图下的全部button背景设置成红色,手写代码,不许用递归
- 图标动画技术入门(An Introduction to Icon Animation Techniques翻译)
- 设计模式之单例模式
- MFC中两个对话框之间数据传递
- Volley框架封装
- Java九种基本数据类型的大小,以及他们的封装类。
- POSIX 线程编程指南(二)
- 分享一个最新的druid数据源配置
- spring + EhCache缓存实例
- apktool打包apk失败log
- Visual Studio 遇到了异常。这可能是由某个扩展导致的。
- 求28 * x + 15 * y = 95108的所有x与y的整数值个数
- 【流程图】流程图符号