В моем приложении загружается несколько изображений из файлов 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)
...
Почему это может случиться?
UPDATE: пробовал оба из них на реальном устройстве - кажется, что я не могу загрузить более 12 МБ растровых изображений во все, что называется "внешняя память" (это не SD-карта).