Not sure if this would work, but may be worth a try:
Before you close the FileOutputStream 'fs', have you tried to call
fs.getFD(),sync() ?
On Wednesday, December 4, 2013 3:00:43 AM UTC-5, Amit Mangal wrote:
>
> Hi there,
> i am loading images on grid view using lazy loading from network. problem
> is not some times image is not coming properly i have attached the screen
> shot.
>
> here is my lazy loading code
>
> private Bitmap getBitmap(String url)
> {
> File f=fileCache.getFile(url);
>
> Bitmap b = showImage(f);
> if(b!=null)
> return b;
>
> //from web
> try {
> Bitmap bitmap=null;
> URL imageUrl = new URL(url);
> HttpURLConnection conn =
> (HttpURLConnection)imageUrl.openConnection();
> conn.setConnectTimeout(60000);
> conn.setReadTimeout(60000);
> conn.setInstanceFollowRedirects(true);
> InputStream is=conn.getInputStream();
> OutputStream os = new FileOutputStream(f);
> Utils.CopyStream(is, os);
> os.close();
> //bitmap = decodeFile(f);
> bitmap = showImage(f);
> return bitmap;
> } catch (Throwable ex){
> ex.printStackTrace();
> if(ex instanceof OutOfMemoryError)
> memoryCache.clear();
> return null;
> }
> }
>
> private Bitmap showImage(File file) {
> //Log.i("showImage","loading:"+path);
> BitmapFactory.Options bfOptions=new BitmapFactory.Options();
> bfOptions.inDither=false; //Disable Dithering
> mode
> bfOptions.inPurgeable=true; //Tell to gc that
> whether it needs free memory, the Bitmap can be cleared
> bfOptions.inInputShareable=true; //Which kind of
> reference will be used to recover the Bitmap data after being clear, when
> it will be used in the future
> bfOptions.inTempStorage=new byte[32 * 1024];
>
>
> //File file=new File(path);
> FileInputStream fs=null;
> try {
> fs = new FileInputStream(file);
> } catch (FileNotFoundException e) {
> //TODO do something intelligent
> e.printStackTrace();
> }
>
> Bitmap bm = null ;
> try {
> if(fs!=null) bm
> =BitmapFactory.decodeFileDescriptor(fs.getFD(), null, bfOptions);
> } catch (IOException e) {
> //TODO do something intelligent
> e.printStackTrace();
> } finally{
> if(fs!=null) {
> try {
> fs.close();
> } catch (IOException e) {
> // TODO Auto-generated catch block
> e.printStackTrace();
> }
> }
> }
> //bm=BitmapFactory.decodeFile(path, bfOptions); This one causes
> error: java.lang.OutOfMemoryError: bitmap size exceeds VM budget
>
> // im.setImageBitmap(bm);
> //bm.recycle();
> // bm=null;
> return bm ;
>
>
> }
>
--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
---
You received this message because you are subscribed to the Google Groups
"Android Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.