【问题标题】:increase the memory allocated to application增加分配给应用程序的内存
【发布时间】:2012-07-18 10:33:52
【问题描述】:

我尝试显示相机拍摄的图像并在应用程序中显示它们。当我拍摄低分辨率图像(例如 100kB 大小)时,切换到位图显示没有问题,当我拍摄高分辨率图像(1.5MB)时,应用程序崩溃,但异常

  Error java.lang.OutOfMemoryError. 

它恰好在我的智能手机上(Samsung Galaxy SII、SIII Galaxy)在所有货架上。 目前,我通过降低照片的质量和尺寸来手动解决,但是随着分辨率不断提高的相机的发展,这个问题可能会更频繁地出现。 是否没有永久的解决方案来增加分配给我的 Android 应用程序的内存,而无需手动干预设备和代码?

图像以位图格式存储

 //image creation
Uri domuri1

ContentValues cv = new ContentValues();
cv.remove("101");
domuri1 = getContentResolver().insert(Media.EXTERNAL_CONTENT _URI, cv);
File domthumb1 = new File(domuri1.toString(), fileName1);

//increment photo apparate
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
intent.putExtra(MediaStore.EXTRA_OUTPUT, domuri1);
startActivityForResult(intent, 100);

//images save
ContentResolver cr = getContentResolver();
bitmap1 = MediaStore.Images.Media.getBitmap(cr, domuri1 );
imageView.setImageBitmap(bitmap1);

【问题讨论】:

    标签: android memory bitmap


    【解决方案1】:

    普通应用程序的默认内存值为 16MB,您可以在 applicattion 标记内的清单文件中使用 android:largeHeap="true"(这可能会将内存增加到 64MB)。您可以通过以下方式获取分配给您的内存值 ActivityManager.getMemoryClass()ActivityManager.getLargeMemoryClass()

    即使您要求largeHeap,android 也只会在您的应用程序需要时分配更多内存。

    【讨论】:

    • 好主意,但如果我在 eclipse 电话错误:在包 'android' 中找不到属性 'largeHeap' 的资源标识符
    • 您的目标是哪个 API 版本?
    • 我已经用 api 8 测试过,在我用 api 11 和 android 3.0 测试过之后
    • 还有其他增加内存的方法吗?我的应用程序需要分配 ~350MB。这可能吗?
    猜你喜欢
    • 2022-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-25
    • 2013-09-09
    • 1970-01-01
    • 2012-10-28
    • 2012-11-01
    相关资源
    最近更新 更多