8

我尝试显示相机拍摄的图像并在应用程序中显示它们。当我拍摄低分辨率图像(例如 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);
4

1 回答 1

15

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

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

于 2012-07-19T09:18:21.487 回答