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.

Reply via email to