android - Caching images fetched from the internet? -


i want cache images fetch on internet. each time images swiped in gallery, wont fetched each time. if 1 tell me how code appreciated.

 if(build.version.sdk_int >= 11){     strictmode.threadpolicy policy = new strictmode.threadpolicy.builder().permitall().build(); strictmode.setthreadpolicy(policy); }    my.setonclicklistener(new view.onclicklistener() {      @override     public void onclick(view v) {         startactivity(n);      } }); gamenews.setonclicklistener(new view.onclicklistener() {      @override     public void onclick(view v) {      } });   //executing asynctask in background thread images. mytask mytask = new mytask();  mytask.execute();  } 

get image methods:

//method images text documents updated every month.  public void getimages() throws ioexception{       defaulthttpclient httpclient = new defaulthttpclient();      httpget httppost = new httpget("https://sites.google.com/site/theitrangers/images/webimages.txt");     httpresponse response;          response = httpclient.execute(httppost);               httpentity ht = response.getentity();              bufferedhttpentity buf = new bufferedhttpentity(ht);              inputstream = buf.getcontent();               bufferedreader r = new bufferedreader(new inputstreamreader(is));              stringbuilder total = new stringbuilder();             string line;             while ((line = r.readline()) != null) {                 total.append(line + "\n");                imageurl = total.tostring();               log.v("getimage1", "retreived image");             }      }                public void getimage2() throws ioexception{                  defaulthttpclient httpclient = new defaulthttpclient();                  httpget httppost = new httpget("https://sites.google.com/site/theitrangers/images/webimage2.txt");                 httpresponse response;                       response = httpclient.execute(httppost);                           httpentity ht = response.getentity();                          bufferedhttpentity buf = new bufferedhttpentity(ht);                          inputstream = buf.getcontent();                           bufferedreader r = new bufferedreader(new inputstreamreader(is));                          stringbuilder total = new stringbuilder();                         string line;                         while ((line = r.readline()) != null) {                             total.append(line + "\n");                            imageurl2 = total.tostring();                           log.v("getimage2", "retreived image");                         }                 }                            public void getimage3() throws ioexception{                              defaulthttpclient httpclient = new defaulthttpclient();                              httpget httppost = new httpget("https://sites.google.com/site/theitrangers/images/webimage3.txt");                             httpresponse response;                                   response = httpclient.execute(httppost);                                       httpentity ht = response.getentity();                                      bufferedhttpentity buf = new bufferedhttpentity(ht);                                      inputstream = buf.getcontent();                                        bufferedreader r = new bufferedreader(new inputstreamreader(is));                                      stringbuilder total = new stringbuilder();                                     string line;                                     while ((line = r.readline()) != null) {                                         total.append(line + "\n");                                        imageurl3 = total.tostring();                                       log.v("getimage3", "retreived image");                                     }                          }                          public void getimage4() throws ioexception{                              defaulthttpclient httpclient = new defaulthttpclient();                              httpget httppost = new httpget("https://sites.google.com/site/theitrangers/images/webimage4.txt");                             httpresponse response;                                   response = httpclient.execute(httppost);                                       httpentity ht = response.getentity();                                      bufferedhttpentity buf = new bufferedhttpentity(ht);                                      inputstream = buf.getcontent();                                       bufferedreader r = new bufferedreader(new inputstreamreader(is));                                      stringbuilder total = new stringbuilder();                                     string line;                                     while ((line = r.readline()) != null) {                                         total.append(line + "\n");                                        imageurl4 = total.tostring();                               } } 

imageadapter class:

                    //imageadapter gets url of images , put them in format set gallery         public class imageadapter extends baseadapter {             /** parent context */             private context mycontext;public imageadapter() {                 // todo auto-generated constructor stub             }             /** url-strings remote images. */              public string[] myremoteimages = {imageurl,imageurl2,imageurl3,imageurl4};                   /** simple constructor saving 'parent' context. */             public imageadapter(context c) { this.mycontext = c; }                  /** returns amount of images have defined. */             public int getcount() { return this.myremoteimages.length; }              /* use array-positions unique ids */             public object getitem(int position) { return position; }             public long getitemid(int position) { return position; }              /** returns new imageview             * displayed, depending on             * position passed. */             public view getview(int position, view convertview, viewgroup parent) {             imageview = new imageview(this.mycontext);              try {                              url aurl = new url(myremoteimages[position]);                             urlconnection conn = aurl.openconnection();                              conn.connect();                              inputstream = conn.getinputstream();                               /* buffered performance plus. */                             bufferedinputstream bis = new bufferedinputstream(is);                             /* decode url-data bitmap. */                              bitmap bm = bitmapfactory.decodestream(bis);                             bis.close();                             is.close();                             log.v(imageurl, "retrieving image");                              /* apply bitmap imageview returned. */                             i.setimagebitmap(bm);                     } catch (ioexception e) {                              log.e("debugtag", "remtoe image exception", e);                     }              /* image should scaled width/height set. */             i.setscaletype(imageview.scaletype.fit_center);             /* set width/height of imageview. */             i.setlayoutparams(new gallery.layoutparams(150, 150));             return i;             }              /** returns size (0.0f 1.0f) of views             * depending on 'offset' center. */             public float getscale(boolean focused, int offset) {             /* formula: 1 / (2 ^ offset) */             return math.max(0, 1.0f / (float)math.pow(2, math.abs(offset)));             }             }               //the important asynctask method. running background thread images , set them gallery.             private class mytask extends asynctask<void, void, void>{               @override             protected void doinbackground(void... arg0) {try {                         getimages();                         log.v("mytask", "image 1 retreived");                         getimage2();                         log.v("mytask", "image 2 retreived");                         getimage3();                         log.v("mytask", "image 3 retreived");                         getimage4();                         log.v("mytask", "image 4 retreived");                     } catch (ioexception e) {                         log.e("mainmenu retreive image", "image retreival failed");                         e.printstacktrace();                     }                 return null;             }             @override              protected void onpostexecute(void notused){                 ((gallery) findviewbyid(r.id.gallery))                       .setadapter(new imageadapter(mainmenu.this));               }         } 

there couple ways this, assuming filename url unique, write them sd card or internal storage. example:

file cachedir = new file("my-cache-dir"); file[] filelist = cachedir.listfiles(); int index = linearsearch.(filelist, uri.getfilename());  if(index != -1){  // load file } else {  // load web } 

there several other ways this, such database or flat file. remember have generate same cache key every time what's cached.


Comments

Popular posts from this blog

c# - How to set Z index when using WPF DrawingContext? -

razor - Is this a bug in WebMatrix PageData? -

visual c++ - Using relative values in array sorting ( asm ) -