我正在尝试通过URL在我的应用中显示图像,但是当(仅当)显示位图时,应用程序变得太慢了。应用程序运行正常,但是当我加载图像时,它变得极其缓慢。有人可以帮忙吗?
所以我有一个名为ImageDownload的类来进行下载,在我的片段中我有:
new ImageDownload((ImageView) login_image, this.getActivity().getApplicationContext(),"login_image")
.execute(path);
这是我的下载课程:
public class ImageDownload extends AsyncTask<String, Void, Bitmap> {
private Context mContext;
private String filename;
ImageView bmImage;
public ImageDownload(ImageView bmImage, Context mContext, String filename) {
this.bmImage = bmImage;
this.mContext = mContext;
this.filename = filename;
}
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,null,null);
//EDIT:
in.close();
// The isuue is not soved yet
} catch (Exception e) {
e.printStackTrace();
}
return mIcon11;
}
protected void onPostExecute(Bitmap result) {
bmImage.setImageBitmap(result);
}
}
答案 0 :(得分:1)
然后你的ImageBitmap&amp;的大小问题平板电脑的RAM大小。在RAM上加载ImageBitmap时需要占用太多RAM。您可以通过查看日志来检测这一点,System.gc()
被调用的频率是多少,因为系统面临的页面错误太频繁而不是页面命中,这几乎就像捶打问题一样。我确信系统正在如此频繁地调用.gc()
,并且在GUI线程中调用System.gc()
时,它会带来令人不安的UI体验。
答案 1 :(得分:0)
您应该使用Google的Volley库
答案 2 :(得分:0)
使用Picasso。这很简单,很酷。
答案 3 :(得分:0)
我终于找到了回应。看看这个。它可能在将来帮助你。谢谢你们所有人。这非常有效:
http://www.technotalkative.com/android-load-images-from-web-and-caching/