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