有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用位图时发生java outofmemory错误

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

@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) 个答案

  1. # 1 楼答案

    在安卓系统中使用位图会消耗大量内存,由于内存泄漏,需要引起HUD的注意

    你可以随时使用

    System.gc()
    

    垃圾收集并释放一些内存

    或者

    bitmap.recycle();
    

    把我在开发图像编辑应用程序时使用的博客帖子拿出来

  2. # 2 楼答案

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

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

    另外,在你不再需要位图后,还要设法释放它们