使用图像时的java.lang.OutOfMemoryError

时间:2012-01-07 23:21:20

标签: android image out-of-memory

我有一个活动在图片视图中显示一个图片,如果我回去,并再次使用此消息转到活动应用程序崩溃:

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 :(得分:0)

请尝试使用ImageView.setImageURI()

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

如果这不能解决问题,那么图像太大了。

读入内存的位图比占用磁盘的原始位占用的空间要多得多。如果您不需要对Bitmap数据执行任何操作,只需将imageView Uri(路径)传递给文件就更有效了。