我尝试使用Picasso进行缓存,在ListView中加载一堆图像(5到10之间)。 我第一次请求服务器上的所有图像,因为它们尚未缓存。在使用Picasso之前,所有这些都用于下载确定,但现在其中一些在下载中失败了,并不总是相同的。
这是我的代码片段:
public View getView(int position, View convertView, ViewGroup parent) {
//ViewHolder holder = null;
holder = null;
if (convertView == null || !(convertView.getTag() instanceof ViewHolder)) {
holder = new ViewHolder();
LayoutInflater mInflater = LayoutInflater.from(context);
convertView = mInflater.inflate(R.layout.item_app, null);
holder.promoImage = (ImageView) convertView.findViewById(R.id.promoAppImage);
holder.appProgress = (ProgressBar) convertView.findViewById(R.id.appProgress);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
loadBitmap(position, holder);
return convertView;
}
public void loadBitmap(int position, final ViewHolder holder) {
final AppWithImage app = apps.get(position);
fileLoader.setOnFileLoadedListener(this);
Picasso.with(context).load(url).fit().tag("homeTag").into(holder.promoImage, new Callback() {
@Override
public void onSuccess() {
Log.d("success", "success");
//holder.promoImage.setImageBitmap(app.getPromo());
holder.promoImage.setVisibility(View.VISIBLE);
holder.appProgress.setVisibility(View.GONE);
}
@Override
public void onError() {
Log.d("error", "error");
}
});
}
这就是我在控制台日志中得到的结果:
11-25 22:46:27.881 27096-27096/com... D/error﹕ error
11-25 22:46:27.881 27096-27096/com... D/success﹕ success
11-25 22:46:28.678 27096-27096/com... D/success﹕ success
11-25 22:46:29.022 27096-27096/com... D/success﹕ success
图像很大,介于200KB到500KB之间,但我没有看到他们下载失败的原因。有没有办法让他们逐个下载或至少不是同时下载?
除此之外,图像数量最初为5,前两个失败,但我只在控制台中看到一条错误消息。