Я схожу с ума от этой проблемы:
Я получаю ошибку OutOfMemoryError каждый раз, когда открываю свое приложение. В какой-то момент он загружает изображение с сервера, но кодирует его строкой Base64.
То, что я делаю, в основном:
decodedString = Base64.decode(imagen_codificada);
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0,
decodedString.length);
Но я получаю проклятый OOME каждый раз.
Если попытаться с этим:
BitmapFactory.Options options=new BitmapFactory.Options();
options.inSampleSize = 8;
Даже установка параметров на 128, что сумасшествие, но все равно вылетает ...
Есть ли способ уменьшить размер строки, как-то кодифицируя изображение перед его декодированием? Я не могу работать напрямую с изображением, потому что оно используется для многих других целей в приложении и в настольных средах ...
Я прикрепляю журнал ОШИБКИ:
12-21 10: 36: 27.032: E / dalvikvm-heap (5508): 10119168-байтовый внешний
выделение слишком велико для этого процесса. 12-21 10: 36: 27.032:
E / dalvikvm (5508): Недостаточно памяти: размер кучи = 5823 КБ, выделено = 4351 КБ,
Размер растрового изображения = 720 КБ, предел = 13692 КБ 12-21 10: 36: 27,032: E / dalvikvm (5508):
Информация об обрезке: занимаемая площадь = 6343 КБ, допустимая площадь = 6343 КБ, обрезка = 520 КБ
12-21 10: 36: 27.032: E / GraphicsJNI (5508): ВМ не позволяет выделять
10119168 байт 12-21 10: 36: 27,192: E / AndroidRuntime (5508): FATAL
ИСКЛЮЧЕНИЕ: основное 12-21 10: 36: 27.192: E / AndroidRuntime (5508):
java.lang.OutOfMemoryError: размер растрового изображения превышает бюджет виртуальной машины
РЕДАКТИРОВАТЬ: РЕШЕНО С ЭТОМ:
decodedString = Base64.decode(imagen_codificada);
System.gc();
BitmapFactory.Options options=new BitmapFactory.Options();
options.inSampleSize = 8;
InputStream input = new ByteArrayInputStream(decodedString);
Bitmap decodedByte = BitmapFactory.decodeStream(input, null,
options);
menu.setNombreApellido(decodedByte);
Спасибо всем !!