2012-01-07 31 views
0

我有一個活動,在一個圖像視圖顯示一個圖像,如果我回去,並進入活動再次應用程序崩潰與此消息:java.lang.OutOfMemoryError時所使用的圖像

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); 

只是一個形象,爲什麼不在memory¿¿的

+0

它顯然太大了。 – JoxTraex 2012-01-07 23:39:49

+0

BitmapFactory.Options options = new BitmapFactory.Options(); \t \t options.inSampleSize = 8; 是的,我把這個,現在它工作正常 – colymore 2012-01-07 23:42:57

+0

嘗試查看您的完整logcat,你會看到你被拒絕從達爾維克虛擬機的空間分配。請求多少,可用多少? – JoxTraex 2012-01-07 23:50:30

回答

0

嘗試使用ImageView.setImageURI()代替:

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

如果這不能解決問題比圖像太大。

讀入內存的位圖比坐在磁盤上的原始位佔用更多的空間。如果您不需要對位圖數據執行任何操作,只需將imageView和Uri(路徑)交給該文件即可更高效。

相關問題