【发布时间】:2014-02-09 00:48:55
【问题描述】:
我正在尝试通过 URL 在我的应用程序中显示图像,但是当(仅当)显示位图时,应用程序变得太慢了。该应用程序运行正常,但是当我加载图像时,它变得非常慢。有人可以帮忙吗?
所以我有一个名为 ImageDownload 的类来进行下载,并且在我的 Fragment 中有:
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);
}
}
【问题讨论】:
-
你的位图有多大?
-
hmmm 如果你的位图很大并且没有正确缩放,我的意思是如果它的原始比率是 3:4 并且你有不同的纵横比,那么如果你滚动屏幕,它应该会很慢,更好选项是在内存中加载较小的版本并保持图像的纵横比
-
好吧,我不需要缩放图像。我正在为平板电脑开发,它适合我的屏幕。我的 Activity 中有一些 EditText,当显示位图时它变得太慢了。
-
只是为了实验,您是否尝试使用此图像作为资源?它是否表现出相同的行为?
-
是的,我试过了。当我从资源 un res 文件夹设置 ImageBitmap 时,它工作得很好。我还尝试将下载的位图保存到 InternalStorage,然后将其设置为 ImageBitmap 但仍然......同样的问题。
标签: android image performance url bitmap