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 android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
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 android-developers+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to