建立一个RequestQueue
来源:互联网 发布:seo需要掌握哪些技术 编辑:程序博客网 时间:2024/06/05 16:14
原文地址:http://www.jianshu.com/p/40d27cbceb98
如果你只是产生一次性的request而不想留下线程池,你可以使用Sending a Simple Request中描述的Volley.newRequestQueue()
在任何你需要的地方创建RequestQueue
,然后一旦响应或错误返回了,在RequestQueue
调用stop()
。但是更普遍的用法是使用单例创建RequestQueue
,让RequestQueue
伴随着app的生命周期一直运行,这个在下一个部分讨论。
使用单例模式
如果你的应用需要经常使用网络,那么创建单例的RequestQueue
会更高效。你可以通过多种方式实现。推荐的方式是实现一个单例类来封装RequestQueue
和其它的Volley有的功能。另一种方式是继承Application
并在Application.onCreate()
方法中构建RequestQueue
。但是我们不鼓励这样做。一个静态的单例能够更加模块化地提供相同的功能。
关键的是RequestQueue
必须用Application
的context来初始化,而不是Activity
的context。这样才能保证RequestQueue
能够伴随着应用的生命周期存在,而不是随着activity的每次重建而重建(比如,当用户旋转设备)。
下面是一个单例类的例子,提供了RequestQueue
和ImageLoader
的功能:
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() 是关键, 它避免了你 //传递进Activity或BroadcastReceiver导致的内存泄漏 mRequestQueue = Volley.newRequestQueue(mCtx.getApplicationContext()); } return mRequestQueue; } public <T> void addToRequestQueue(Request<T> req) { getRequestQueue().add(req); } public ImageLoader getImageLoader() { return mImageLoader; }}
下面是使用单例类来执行RequestQueue
操作的例子:
// 获取一个RequestQueueRequestQueue queue = MySingleton.getInstance(this.getApplicationContext()). getRequestQueue();// ...// 添加一个request (示例中为 stringRequest) 到RequestQueue中MySingleton.getInstance(this).addToRequestQueue(stringRequest);
项目源码下载 :点击下载
0 0
- 建立一个RequestQueue
- Android网络框架-Volley(二) RequestQueue源码分析以及建立一个RequestQueue
- volley建立请求队列(Setting Up a RequestQueue)
- Volley RequestQueue
- RequestQueue 请求队列
- Volley之RequestQueue
- Setting Up a RequestQueue
- Android--Volley---RequestQueue学习
- volley笔记--开篇:RequestQueue
- 如何建立一个建立一个网站
- 初识Volley:JsonObjectRequest、StringRequest、RequestQueue
- 建立一个CSliderCtrl
- 建立一个C6000simulator工程
- 建立一个邮箱OSMboxCreate()
- 建立一个struts项目
- 建立一个table
- unix建立一个文件
- 建立一个 Android 程式
- 背包问题
- 剪邮票
- B. Valued Keys
- DNS
- 微信消息响应
- 建立一个RequestQueue
- Python SQLite3的问题sqlite3.ProgrammingError: SQLite objects created in a thread can only be used in th
- 方法的重载与覆盖
- 剪邮票plus
- Linux命令之rm
- vue轮播图插件vue-awesome-swiper的使用
- 更合理的 setState()
- mysql基本操作
- 一款使用C# .NET开发的SIP客户端开源项目含完整源码项目文件