В моем приложении я загружаю пару изображений из файлов JPEG и PNG.Когда я помещаю все эти файлы в каталог ресурсов и загружаю его таким образом, все в порядке:
InputStream stream = getAssets().open(path);
Bitmap bitmap = BitmapFactory.decodeStream(stream, null, null);
stream.close();
return new BitmapDrawable(bitmap);
Но когда я пытаюсь загрузить те же самые изображения с SD-карты, я получаю исключение OutOfMemory!
InputStream stream = new FileInputStream("/mnt/sdcard/mydata/" + path);
Bitmap bitmap = BitmapFactory.decodeStream(stream, null, null);
stream.close();
return new BitmapDrawable(bitmap);
Вот что я получаю в журнале:
11-05 00:53:31.003: ERROR/dalvikvm-heap(13183): 827200-byte external allocation too large for this process.
11-05 00:53:31.003: ERROR/GraphicsJNI(13183): VM won't let us allocate 827200 bytes
...
11-05 00:53:31.053: ERROR/AndroidRuntime(13183): Caused by: java.lang.OutOfMemoryError: bitmap size exceeds VM budget
11-05 00:53:31.053: ERROR/AndroidRuntime(13183): at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
...
Почему это может произойти?
ОБНОВЛЕНИЕ: Опробовал оба из них на реальном устройстве - кажетсяЯ не могу загрузить более 12 МБ растровых изображений в то, что называется «внешней памятью» (это не SD-карта).