我使用此方法在第一页上加载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);
}
}
答案 0 :(得分:1)
使用Glide,Picasso或其他一些图像加载器。 在AsyncTask中保持对UI元素的引用或者拥有私有内部AsyncTask类也不是一个好习惯。 您可以看到here原因。
答案 1 :(得分:1)
检查您是否使用DownloadImageTask
而不是execute()
来呼叫get()
。执行get()
将阻止您的用户界面,直到任务完成。
请不要重新发明轮子!有很多好的库可以有效地从网址加载图像。
希望这会有所帮助!!
答案 2 :(得分:-1)