Android 大图片下载概率:内存不足
Android big image downloading prob : Out of memory
我正在尝试下载图像文件。在某些情况下,图像太大以至于在中途出现 OutOfMemoryError。这种情况怎么处理?
private class DownloadImage extends AsyncTask<String, Void, Bitmap> {
@Override
protected void onPreExecute() {
super.onPreExecute();
mProgressDialog = new ProgressDialog(MainActivity.this);
mProgressDialog.setTitle("Download Image");
mProgressDialog.setMessage("Loading...");
mProgressDialog.setIndeterminate(false);
mProgressDialog.show();
}
@Override
protected Bitmap doInBackground(String... URL) {
String imageURL = URL[0];
Bitmap bitmap = null;
try {
// Download Image from URL
InputStream input = new java.net.URL(imageURL).openStream();
// Decode Bitmap
bitmap = BitmapFactory.decodeStream(input);
} catch (Exception e) {
e.printStackTrace();
}
return bitmap;
}
@Override
protected void onPostExecute(Bitmap result) {
// Set the bitmap into ImageView
image.setImageBitmap(result);
// Close progressdialog
mProgressDialog.dismiss();
}
}
首先你需要确定,你需要在什么屏幕或屏幕部分显示它。您需要定义容器的结果大小(宽度和高度),这将在应用程序中显示您的图像。然后,当您收到图片时,您需要将其缩小到目标尺寸,然后才显示它。
这里有完整的教程!link!
但我建议您使用 'load images' 库之一。 毕加索就是一个很好的例子。请查看here
如果您不想使用像 Picasso
这样的库,您可以使用 Volley
.
去搜索 NetworkImageView
,也许它会帮助 you.There 是一个教程: using-volley-to-download-cache-and-display-bitmaps.
你也可以看看这个问题:how-do-i-properly-set-up-volley-to-download-images-from-a-url
还有这里:Volley Request
add "android:largeHeap=true" in application tag of manifest file
我正在尝试下载图像文件。在某些情况下,图像太大以至于在中途出现 OutOfMemoryError。这种情况怎么处理?
private class DownloadImage extends AsyncTask<String, Void, Bitmap> {
@Override
protected void onPreExecute() {
super.onPreExecute();
mProgressDialog = new ProgressDialog(MainActivity.this);
mProgressDialog.setTitle("Download Image");
mProgressDialog.setMessage("Loading...");
mProgressDialog.setIndeterminate(false);
mProgressDialog.show();
}
@Override
protected Bitmap doInBackground(String... URL) {
String imageURL = URL[0];
Bitmap bitmap = null;
try {
// Download Image from URL
InputStream input = new java.net.URL(imageURL).openStream();
// Decode Bitmap
bitmap = BitmapFactory.decodeStream(input);
} catch (Exception e) {
e.printStackTrace();
}
return bitmap;
}
@Override
protected void onPostExecute(Bitmap result) {
// Set the bitmap into ImageView
image.setImageBitmap(result);
// Close progressdialog
mProgressDialog.dismiss();
}
}
首先你需要确定,你需要在什么屏幕或屏幕部分显示它。您需要定义容器的结果大小(宽度和高度),这将在应用程序中显示您的图像。然后,当您收到图片时,您需要将其缩小到目标尺寸,然后才显示它。
这里有完整的教程!link!
但我建议您使用 'load images' 库之一。 毕加索就是一个很好的例子。请查看here
如果您不想使用像 Picasso
这样的库,您可以使用 Volley
.
去搜索 NetworkImageView
,也许它会帮助 you.There 是一个教程: using-volley-to-download-cache-and-display-bitmaps.
你也可以看看这个问题:how-do-i-properly-set-up-volley-to-download-images-from-a-url
还有这里:Volley Request
add "android:largeHeap=true" in application tag of manifest file