1

我创建了一个 android 应用程序,它从图库中选择一张图片并显示预览。

@Override
public void onClick(View v) {
    if (v.getId()== R.id.button){

        Intent intent = new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_PICK);
        startActivityForResult(Intent.createChooser(intent,
                "Select Picture"), SELECT_PICTURE);
    }

选择图像后,应显示预览。

然而,它只是第一次起作用。后来当我点击返回时,它显示outOfMemoryException

4

3 回答 3

2

在 android 中使用位图会消耗大量内存,由于内存泄漏,这需要非常注意。

你可以随时使用

System.gc()

垃圾收集并释放一些内存。

或者

bitmap.recycle();

查看我在开发图像编辑应用程序时使用的这些博客文章。

于 2013-08-20T12:34:22.313 回答
1

在 android 中使用位图通常会引发 OutOfMemory 错误。位图需要正确处理。您可能想查看以下专门用于图像加载和在 android 中使用位图的库:

https://github.com/nostra13/Android-Universal-Image-Loader

https://github.com/novoda/ImageLoader

您还可以实现自己的图像加载器。你可以很容易地找到它的代码。

于 2013-08-20T11:54:40.683 回答
0

您可能正在缓存很多位图,因此您可以使用ImageLoader并执行以下操作:

ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
                this).memoryCache(new WeakMemoryCache())
                .discCache(new UnlimitedDiscCache(new File("/cache"))).build();

也可以尝试在不再需要位图后以某种方式释放它们

于 2013-08-20T12:32:02.343 回答