0

我使用这种方法在第一页加载 10 个图像,但我有一个问题。第一张图片需要很长时间才能加载。在第一张图像后,其他图像加载速度很快。我不知道为什么?

调用方法new DownloadImageTask((ImageView) findViewById(R.id.imageView_bb1).execute(db.getURLimgMahsol(id_bb2));

加载图像方法

private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
        ImageView bmImage;

        public DownloadImageTask(ImageView bmImage) {
            this.bmImage = bmImage;

        }

        protected Bitmap doInBackground(String... urls) {
            String urldisplay = urls[0];
            Bitmap mIcon11 = null;
            try {
                InputStream in = new java.net.URL(urldisplay).openStream();
                mIcon11 = BitmapFactory.decodeStream(in);
            } catch (Exception e) {
                Log.e("Error", e.getMessage());
                e.printStackTrace();
            }
            return mIcon11;
        }

        protected void onPostExecute(Bitmap result) {
            bmImage.setImageBitmap(result);
        }
    }
4

3 回答 3

1

检查您是否使用 调用DownloadImageTaskexecute()不是使用调用get()。执行get()阻塞您的 UI,直到任务完成。

请不要重新发明轮子!有许多好的库可以有效地处理从 url 加载图像。

希望这可以帮助!!

于 2016-03-31T14:39:55.420 回答
1

使用 Glide、Picasso 或其他一些图像加载器。此外,在 AsyncTask 中保留 UI 元素的引用或拥有私有的内部 AsyncTask 类也不是一个好习惯。你可以在这里看到为什么。

于 2016-03-31T14:19:28.313 回答
-1

可能你AsyncTask一个一个地开始 10 ,所以 UI 会冻结。
您应该创建队列:首先开始AsyncTask->onPostExecute第二个开始,依此类推。


我建议你使用Glide
是关于 Glide 和其他 ImageLoader 的讨论。

于 2016-03-31T14:11:59.087 回答