java.lang.OutOfMemoryError при использовании изображений - PullRequest
0 голосов
/ 08 января 2012

У меня есть одно действие, которое показывает одно изображение в представлении изображения, если я вернусь и снова зайду в действие, сбой приложения с этим сообщением:

01-08 00:17:18.089: E/AndroidRuntime(12547): FATAL EXCEPTION: main
01-08 00:17:18.089: E/AndroidRuntime(12547): java.lang.OutOfMemoryError
01-08 00:17:18.089: E/AndroidRuntime(12547):    at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
01-08 00:17:18.089: E/AndroidRuntime(12547):    at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:493)
01-08 00:17:18.089: E/AndroidRuntime(12547):    at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:299)
01-08 00:17:18.089: E/AndroidRuntime(12547):    at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:324)
01-08 00:17:18.089: E/AndroidRuntime(12547):    at com.rbrlnx.lugares.mostrarLugar.onCreate(mostrarLugar.java:74)

Активность это

sFoto=obtainsRealPath(Uri.parse(foto));
Bitmap bitmap = BitmapFactory.decodeFile(sFoto);
ImageView iLugar = (ImageView) findViewById(R.id.iDelLugar);
iLugar.setImageBitmap(bitmap);

Только одно изображение, почему не хватает памяти¿¿

1 Ответ

0 голосов
/ 08 января 2012

Попробуйте использовать ImageView.setImageURI () вместо:

ImageView iLugar = (ImageView) findViewById(R.id.iDelLugar);
iLugar.setImageURI(Uri.parse(foto));

Если это не решает проблему, изображение просто слишком велико.

Растровое изображениечтение в память занимает гораздо больше места, чем необработанные биты, которые находятся на диске.Если вам не нужно выполнять какие-либо операции с данными растрового изображения, более просто передать imageView a Uri (путь) к файлу.

...