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