使用volley的过程中错误的使用

Volley的用法非常简单,那么我们就从最基本的HTTP通信开始学习吧,即发起一条HTTP请求,然后接收HTTP响应。首先需要获取到一个RequestQueue对象,可以调用如下方法获取到:
RequestQueue mQueue = Volley.newRequestQueue(context); 

注意这里拿到的RequestQueue是一个请求队列对象,它可以缓存所有的HTTP请求,然后按照一定的算法并发地发出这些请求。RequestQueue内部的设计就是非常合适高并发的,因此我们不必为每一次HTTP请求都创建一个RequestQueue对象,这是非常浪费资源的,基本上在每一个需要和网络交互的Activity中创建一个RequestQueue对象就足够了。

我的错误使用:

在适配器中使用NetworkImageView加载图片时,由于每次都会创建一个新的请求队列,造成虽然图片加载成功,但是会出现listview滑动时卡顿,因为每次调用getView()方法都新实例化了一个队列,造成时间开销和内存开销,不断的滑动过程中造成应用崩溃。

所以正确的使用方法应该是:

<span style="font-size:18px;">	public WeiBoPullAdapter(Context context, ArrayList<Status> as) {
		this.mInflater = LayoutInflater.from(context);
		this.context = context;
		this.as = as;
		RequestQueue mQueue = Volley.newRequestQueue(context);
		mImageLoader = new ImageLoader(mQueue, new BitmapCache());
	}
</span>

在适配器实例化之初只创建一个队列,并设置图片缓存的大小设计(bitmapcache),然后在适配器调用的地方只进行了一个队列的创建。

在使用时之需要一句话:

<span style="font-size:18px;">holder.imgHead.setImageUrl(status.user.profile_image_url, mImageLoader);</span>
当然在加载之初可以进行初始化 的图片设置:

<span style="font-size:18px;">	holder.imgHead.setDefaultImageResId(R.drawable.ic_com_sina_weibo_sdk_logo);
	holder.imgHead.setErrorImageResId(R.drawable.ic_com_sina_weibo_sdk_logo);</span>

找到错误的博客:http://blog.csdn.net/xyz_lmn/article/details/12746581


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值