在我的应用程序中出现此异常,请建议我如何纠正此异常:- 我已尝试更改 Imageloader 代码,但未成功。
//decode image size
BitmapFactory.Options o = new BitmapFactory.Options();
o.inJustDecodeBounds = true;
BitmapFactory.decodeStream(new FileInputStream(f),null,o);
/*
* options.inJustDecodeBounds = true;
BitmapFactory.decodeResource(res, resId, options);
// Calculate inSampleSize
options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);
// Decode bitmap with inSampleSize set
options.inJustDecodeBounds = false;
return BitmapFactory.decodeResource(res, resId, options);
*
*
*
* */
// Calculate inSampleSize
o.inSampleSize = calculateInSampleSize(o,100,100);
o.inJustDecodeBounds = false;
//Find the correct scale value. It should be the power of 2.
// final int REQUIRED_SIZE=70;
//int width_tmp=o.outWidth, height_tmp=o.outHeight;
// int scale=1;
// while(true){
// if(width_tmp/2<REQUIRED_SIZE || height_tmp/2<REQUIRED_SIZE)
// break;
// width_tmp/=2;
// height_tmp/=2;
// scale*=2;
// }
//decode with inSampleSize
// BitmapFactory.Options o2 = new BitmapFactory.Options();
//
// o2.inSampleSize=2;
return BitmapFactory.decodeStream(new FileInputStream(f), null, null);
上面的代码有什么问题,因为本节发生了异常......
06-28 10:53:36.676: E/dalvikvm-heap(595): 960000-byte external allocation too large for this process.
06-28 10:53:36.806: E/GraphicsJNI(595): VM won't let us allocate 960000 bytes
06-28 10:53:36.836: E/AndroidRuntime(595): FATAL EXCEPTION: AsyncTask #1
06-28 10:53:36.836: E/AndroidRuntime(595): java.lang.RuntimeException: An error occured while executing doInBackground()
06-28 10:53:36.836: E/AndroidRuntime(595): at android.os.AsyncTask$3.done(AsyncTask.java:200)
06-28 10:53:36.836: E/AndroidRuntime(595): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274)
06-28 10:53:36.836: E/AndroidRuntime(595): at java.util.concurrent.FutureTask.setException(FutureTask.java:125)
06-28 10:53:36.836: E/AndroidRuntime(595): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308)
06-28 10:53:36.836: E/AndroidRuntime(595): at java.util.concurrent.FutureTask.run(FutureTask.java:138)
06-28 10:53:36.836: E/AndroidRuntime(595): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
06-28 10:53:36.836: E/AndroidRuntime(595): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
06-28 10:53:36.836: E/AndroidRuntime(595): at java.lang.Thread.run(Thread.java:1019)
06-28 10:53:36.836: E/AndroidRuntime(595): Caused by: java.lang.OutOfMemoryError: bitmap size exceeds VM budget
06-28 10:53:36.836: E/AndroidRuntime(595): at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
06-28 10:53:36.836: E/AndroidRuntime(595): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:470)
06-28 10:53:36.836: E/AndroidRuntime(595): at com.rentfaster.utilities.ImageLoader.decodeFile(ImageLoader.java:161)
06-28 10:53:36.836: E/AndroidRuntime(595): at com.rentfaster.utilities.ImageLoader.getBitmap(ImageLoader.java:94)
06-28 10:53:36.836: E/AndroidRuntime(595): at com.rentfaster.handler.DetailPhotoHandler.imagefecher(DetailPhotoHandler.java:211)
06-28 10:53:36.836: E/AndroidRuntime(595): at com.rentfaster.handler.DetailPhotoHandler.characters(DetailPhotoHandler.java:153)
06-28 10:53:36.836: E/AndroidRuntime(595): at org.apache.harmony.xml.ExpatParser.text(ExpatParser.java:165)
06-28 10:53:36.836: E/AndroidRuntime(595): at org.apache.harmony.xml.ExpatParser.appendBytes(Native Method)
06-28 10:53:36.836: E/AndroidRuntime(595): at org.apache.harmony.xml.ExpatParser.parseFragment(ExpatParser.java:518)
06-28 10:53:36.836: E/AndroidRuntime(595): at or g.apache.harmony.xml.ExpatParser.parseDocument(ExpatParser.java:479)
06-28 10:53:36.836: E/AndroidRuntime(595): at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:318)
06-28 10:53:36.836: E/AndroidRuntime(595): at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:275)
06-28 10:53:36.836: E/AndroidRuntime(595): at com.rentfaster.home.PropertyDetail$Photostask.doInBackground(PropertyDetail.java:1174)
06-28 10:53:36.836: E/AndroidRuntime(595): at com.rentfaster.home.PropertyDetail$Photostask.doInBackground(PropertyDetail.java:1)
06-28 10:53:36.836: E/AndroidRuntime(595): at android.os.AsyncTask$2.call(AsyncTask.java:185)
06-28 10:53:36.836: E/AndroidRuntime(595): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
06-28 10:53:36.836: E/AndroidRuntime(595): ... 4 more