使用位图Android的outofmemory错误

时间:2013-08-20 11:43:15

标签: java android bitmap out-of-memory

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

@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

3 个答案:

答案 0 :(得分:2)

在android中使用位图会花费你很多内存,因为内存泄漏需要引起人们的注意。

你可以随时使用

System.gc()

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

bitmap.recycle();

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

答案 1 :(得分:1)

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

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

https://github.com/novoda/ImageLoader

您还可以实现自己的图像加载器。您可以轻松找到相应的代码。

答案 2 :(得分:0)

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

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

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