Android/Java 异步图片下载任务永不停止 运行
Android/Java Asynchronous Image Download Task Never Stops Running
我正在尝试解析 JSON 负载并将信息放在相对布局视图中。
我使用此标准异步下载例程来获取要放置在适当 ImageView 中的位图:
public class AsyncDownloadImage extends AsyncTask<String,Void,Bitmap>{
ImageView bmImage;
public AsyncDownloadImage(ImageView bmImage){
this.bmImage = bmImage;
}
@Override
protected Bitmap doInBackground(String... urls) {
String urldisplay = null;
urldisplay = urls[0];
Bitmap merchViewBitMap = Bitmap.createBitmap(90,90,Bitmap.Config.ARGB_8888);
try{
InputStream in = new URL(urldisplay).openStream();
merchViewBitMap = BitmapFactory.decodeStream(in);
in.close();
}catch(Exception e){
System.out.println(String.format("Image Download Exception ==> %s", e.toString()));
}
return merchViewBitMap;
}
@Override
protected void onPostExecute(Bitmap result) {
super.onPostExecute(result);
bmImage.setImageBitmap(result);
}
}
在Adapter的getView方法中是这样调用的class:
String imageUrl = String.format("https://www.xxxxxx.com/va/public/render_image?image_id=%s", currentMerchItem.getMt_image_id());
new AsyncDownloadImage(viewHolder.imageview).execute(imageUrl);
下载了图片,设置了ImageView,但是重复无限下载。多个图像似乎在一个 ImageView 中,当滚动浏览时它们会发生变化,因为每个图像都是 gif。
下载列表中的最后一张图片后如何停止此操作?!
-恩
每次适配器的视图(例如列表视图)需要刷新项目的视图时,都会调用适配器的getView 方法。例如,当您滚动时,您将多次调用 getview 方法(当然取决于列表长度)。在您的情况下,至少您需要管理哪些图像已经从网络加载。你也有很多开源代码用于延迟加载,完全适用于像你这样的情况。
你也可以看看这个帖子,它可能对你有帮助:
Lazy load of images in ListView
我正在尝试解析 JSON 负载并将信息放在相对布局视图中。
我使用此标准异步下载例程来获取要放置在适当 ImageView 中的位图:
public class AsyncDownloadImage extends AsyncTask<String,Void,Bitmap>{
ImageView bmImage;
public AsyncDownloadImage(ImageView bmImage){
this.bmImage = bmImage;
}
@Override
protected Bitmap doInBackground(String... urls) {
String urldisplay = null;
urldisplay = urls[0];
Bitmap merchViewBitMap = Bitmap.createBitmap(90,90,Bitmap.Config.ARGB_8888);
try{
InputStream in = new URL(urldisplay).openStream();
merchViewBitMap = BitmapFactory.decodeStream(in);
in.close();
}catch(Exception e){
System.out.println(String.format("Image Download Exception ==> %s", e.toString()));
}
return merchViewBitMap;
}
@Override
protected void onPostExecute(Bitmap result) {
super.onPostExecute(result);
bmImage.setImageBitmap(result);
}
}
在Adapter的getView方法中是这样调用的class:
String imageUrl = String.format("https://www.xxxxxx.com/va/public/render_image?image_id=%s", currentMerchItem.getMt_image_id());
new AsyncDownloadImage(viewHolder.imageview).execute(imageUrl);
下载了图片,设置了ImageView,但是重复无限下载。多个图像似乎在一个 ImageView 中,当滚动浏览时它们会发生变化,因为每个图像都是 gif。
下载列表中的最后一张图片后如何停止此操作?!
-恩
每次适配器的视图(例如列表视图)需要刷新项目的视图时,都会调用适配器的getView 方法。例如,当您滚动时,您将多次调用 getview 方法(当然取决于列表长度)。在您的情况下,至少您需要管理哪些图像已经从网络加载。你也有很多开源代码用于延迟加载,完全适用于像你这样的情况。
你也可以看看这个帖子,它可能对你有帮助: Lazy load of images in ListView