In My applicatin occure this exception please suggest me How I can Rectify this Exception:-
I have been Tried to change in Imageloader code as but that not success.
//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);
What wrong in above code because Exception occure in this section…
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
You can see my answer on the same issue.
If you want some more help, please let me know.
Thank you 🙂
UPDATE:
You have used:
This method creates a bitmap and returns the bitmap, you are not catching that bitmap.
you should use something like:
You should create all the options first and then call the
decodeStream()method. There is no effect of creating options after calling this method.You have used options, but always try to use all possible options that you can use, like following:
Always call the
bitmap.recycle()method as soon as you have used bitmap.If all these solutions does not work, then as I have suggested, use
MAT for eclipseplugin, because, certainly u’d be having a memory leak in your code.