volley的正确使用方式
2015-09-14 19:34
435 查看
源码下载:https://github.com/heinika/android-volley
导入的三种方式:
在dependencies下搜索
导入源码包,import model 在dependencies导入model
导入jar,放在lib目录下
networkimageview防止内存溢出
先下载,判断内存,不够就压缩图片
volley实现方式(如上图):
先找缓存
后访问网络
使用起来非常简单:
先写一个单例,保证只有一个RequestQueue
再在主函数中使用
导入的三种方式:
在dependencies下搜索
导入源码包,import model 在dependencies导入model
导入jar,放在lib目录下
networkimageview防止内存溢出
先下载,判断内存,不够就压缩图片
volley实现方式(如上图):
先找缓存
后访问网络
使用起来非常简单:
先写一个单例,保证只有一个RequestQueue
public class MySingleton { private static MySingleton mInstance; private RequestQueue mRequestQueue; private ImageLoader mImageLoader; private static Context mCtx; private MySingleton(Context context) { mCtx = context; mRequestQueue = getRequestQueue(); mImageLoader = new ImageLoader(mRequestQueue, new ImageLoader.ImageCache() { private final LruCache<String, Bitmap> cache = new LruCache<String, Bitmap>(20); @Override public Bitmap getBitmap(String url) { return cache.get(url); } @Override public void putBitmap(String url, Bitmap bitmap) { cache.put(url, bitmap); } }); } public static synchronized MySingleton getInstance(Context context) { if (mInstance == null) { mInstance = new MySingleton(context); } return mInstance; } public RequestQueue getRequestQueue() { if (mRequestQueue == null) { // getApplicationContext() is key, it keeps you from leaking the // Activity or BroadcastReceiver if someone passes one in. mRequestQueue = Volley.newRequestQueue(mCtx.getApplicationContext()); } return mRequestQueue; } public <T> void addToRequestQueue(Request<T> req) { getRequestQueue().add(req); } public ImageLoader getImageLoader() { return mImageLoader; } }
再在主函数中使用
case R.id.button_volley_connect: /** * 应该创建单例防止出现多个RequestQueue */ // RequestQueue queue = Volley.newRequestQueue(getApplicationContext()); MySingleton singleton = MySingleton.getInstance(getApplicationContext()); RequestQueue queue = singleton.getRequestQueue(); StringRequest request = new StringRequest(Request.Method.POST, "http://192.168.0.30:8080/MyWebTest/MyTestServerlet", new Response.Listener<String>() { @Override public void onResponse(String response) { mTextViewVolley.setText(response); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { mTextViewVolley.setText("网络连接失败"+error.toString()); } }){ @Override protected Map<String, String> getParams() throws AuthFailureError { HashMap map = new HashMap(); map.put("username","heinika"); return map; } }; singleton.addToRequestQueue(request); break; case R.id.button_networkimageview: mNetworkImageView.setImageUrl("http://f.hiphotos.baidu.com/news/w%3D638/sign=38984923f5deb48ffb69a2ddc81e3aef/b03533fa828ba61e6db11b6d4734970a304e5911.jpg" ,MySingleton.getInstance(getApplicationContext()).getImageLoader()); break; default: break; } }
相关文章推荐
- Android之单线程下载与多线程下载
- C++Primer第五版 5.3.2节练习
- Redrain duilib中的名字空间问题
- HDU--1213并查集
- 老师语录
- 第八周第一天
- java实现大数取模
- POJ2774 Long Long Message(后缀数组入门题)
- 算法系列--Reverse Integer
- HDU--1213并查集
- hdu5441(2015长春赛区网络赛1005)类最小生成树、并查集
- 如何检查 Android 应用的内存使用情况
- java实现大数加法
- poj 1321 棋盘问题
- TCP/IP 相关总结
- 理论知识总结
- 使用Android Studio的硬件配置
- HDU 1081 To The Max
- 关于Android中,保留小数点后两位的方式
- duilib lib库静态变量初始化问题