在第一页上加载10张图像

时间:2016-03-31 14:06:49

标签: android loadimage

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

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

loadImage方法

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);
        }
    }

3 个答案:

答案 0 :(得分:1)

使用Glide,Picasso或其他一些图像加载器。 在AsyncTask中保持对UI元素的引用或者拥有私有内部AsyncTask类也不是一个好习惯。 您可以看到here原因。

答案 1 :(得分:1)

检查您是否使用DownloadImageTask而不是execute()来呼叫get()。执行get()阻止您的用户界面,直到任务完成。

请不要重新发明轮子!有很多好的库可以有效地从网址加载图像。

希望这会有所帮助!!

答案 2 :(得分:-1)

你可能会逐一启动10 AsyncTask,因此UI会被冻结 你应该排队:先开始AsyncTask - &gt; onPostExecute开始第二,依此类推。

我建议您使用Glide Here是关于Glide和其他ImageLoaders的讨论。