Volley的用法非常简单,那么我们就从最基本的HTTP通信开始学习吧,即发起一条HTTP请求,然后接收HTTP响应。首先需要获取到一个RequestQueue对象,可以调用如下方法获取到:
找到错误的博客:http://blog.csdn.net/xyz_lmn/article/details/12746581
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