volley中有一个NetworkImageView的类。这个类在父类detach的时候会自动取消网络请求,当父类重新活跃的时候会继续网络请求。
现象:现有一个listView,每个item中包含一张待从网络加载的图片,如果这个listView不能一下显示完全,那么listView只会先加载当前看得到的item中的网络图片。
原因是listView会detach一些看不到的item,这些item被detached以后,由于NetworkImageView的特性,网络请求取消了,而当前活跃的item继续发起网络请求,所以会看到如上现象。
所以使用NetworkImageView的时候即可不必当心请求生命周期的问题,它已由该类封装。需要做的只是设置一个ImageLoader:
NetworkImageView view = (NetworkImageView) findViewById(R.id.network_image_view);
view.setImageUrl(url,new ImageLoader(mQueue, new BitmapCache()));