Android Using Multiple methods inside Asynctask -


i'm trying run background asynctask load in data.
have 2 methods load in data , i'm running them in asynctask.
when it's done loading have method called filldata fills ui data.

the problem @ moment it's filling ui whichever method finishes downloading data first.
there way run multiple methods inside 1 asynctask or need multiple asynctasks?

here's asynctask

public class posttask extends asynctask<void, string, boolean> {      @override     protected boolean doinbackground(void... params) {         boolean result = false;         loadnewsfeed();         loadresultsfeed();         publishprogress("progress");         return result;     }       protected void onprogressupdate(string... progress) {         stringbuilder str = new stringbuilder();             (int = 1; < progress.length; i++) {                 str.append(progress[i] + " ");              }     }          @override     protected void onpostexecute(boolean result) {         super.onpostexecute(result);         log.v("bgthread", "begin fillin data");          filldata();     } } 

heres full code

public void checkpreferences(){          sharedpreferences preferences = getsharedpreferences("prefs", context.mode_private);         chosenmethod = preferences.getstring("chosenmethod", chosenmethod);         chosenleagueid = preferences.getstring("chosenleagueid", chosenleagueid);         chosenteamid = preferences.getstring("chosenteamid", chosenteamid);           log.v("lc", "newsurl" + newsfeedurl);           log.v("myapp", "chosenmethod home = " + chosenmethod);         log.v("myapp", "chosenleagueid home = " + chosenleagueid);         log.v("myapp", "chosenteamid home = " + chosenteamid);           if (chosenmethod.equals("team")) {              setcontentview(r.layout.homeactteam2);              newsamount = 5;           } else {              newsamount = 10;              setcontentview(r.layout.homeactteam);          }  }   @override protected void oncreate(bundle savedinstancestate) {     // todo auto-generated method stub     super.oncreate(savedinstancestate);      //check preferences sets ui      checkpreferences();    posttask posttask;    posttask = new posttask();    posttask.execute();         button backbtn = (button) findviewbyid(r.id.backbtn);      //listening button event     backbtn.setonclicklistener(new view.onclicklistener() {          public void onclick(view arg0) {             //starting new intent             intent previousscreen = new intent(getapplicationcontext(), chooseteamactivity.class);             chosenmethod = "null";             sharedpreferences preferences = getsharedpreferences("prefs", context.mode_private);             sharedpreferences.editor editor = preferences.edit();             editor.putstring("chosenmethod", chosenmethod);                         editor.commit();             previousscreen.putextra("fulldata", fulldata);             startactivity(previousscreen);           }     });  //((pulltorefreshlistview) getlistview()).setonrefreshlistener(new onrefreshlistener() { //    //    public void onrefresh() { //        // work refresh list here. //        loaddata(); //    } //}); //   }    public void loadnewsfeed(){       newsfeedrequest = "" + chosenleagueid + "" + unixtimestamp;      newsfeedurl = "" + newsfeedrequest;              string myhash = buildhmacsignature(apikey, newsfeedurl);         httpclient client = new defaulthttpclient();         httppost post = new httppost(newsfeedurl);          list<namevaluepair> pairs = new arraylist<namevaluepair>();         pairs.add(new basicnamevaluepair("requesttoken", myhash));         pairs.add(new basicnamevaluepair("apiuser", apiuser));              try {                 post.setentity (new urlencodedformentity(pairs));                 httpresponse response = client.execute(post);                 bufferedreader reader = new bufferedreader(new inputstreamreader(response.getentity().getcontent(), "utf-8"));                 string json = reader.readline();                 fulldata = string.valueof(json);                 log.v("myapp","newsdata" + fulldata);                  newslist = new arraylist<string>();                 newslist2 = new arraylist<string>();                 newslist3 = new arraylist<string>();                 imagelist = new arraylist<string>();                   jsonobject obj = new jsonobject(json);                     jsonobject objdata = obj.getjsonobject("data");                 jsonarray jarray = objdata.getjsonarray("news");                 log.v("lc","newsamount= " + newsamount);                     for(int t = 0; t < newsamount; t++){                        jsonobject newstitledict = jarray.getjsonobject(t);                        imagelist.add(newstitledict.getstring("image_small"));                      newslist3.add(newstitledict.getstring("title"));                     }                     for(int t = 0; t < 1; t++){                        jsonobject newstitledict = jarray.getjsonobject(t);                   newslist.add(newstitledict.getstring("title"));             //       newslist2.add(newstitledict.getstring("title"));                     }                       log.v("bgthread", "loaded news");                      loadresultsfeed();      } catch (clientprotocolexception e) {         // todo auto-generated catch block         e.printstacktrace();     } catch (ioexception e) {         // todo auto-generated catch block         e.printstacktrace();     } catch (jsonexception e) {         // todo auto-generated catch block         e.printstacktrace();     }   }              public void loadresultsfeed(){       resultsfeedrequest = "" + chosenleagueid + "" + chosenteamid + "" + unixtimestamp;     resultsfeedurl = "https://secure.pitchero.com/_services/api/" + resultsfeedrequest;       string myhash = buildhmacsignature(apikey, resultsfeedurl);      httpclient client = new defaulthttpclient();     httppost post = new httppost(resultsfeedurl);      list<namevaluepair> pairs = new arraylist<namevaluepair>();     pairs.add(new basicnamevaluepair("requesttoken", myhash));     pairs.add(new basicnamevaluepair("apiuser", apiuser));      try {         post.setentity (new urlencodedformentity(pairs));         httpresponse response = client.execute(post);         bufferedreader reader = new bufferedreader(new inputstreamreader(response.getentity().getcontent(), "utf-8"));         string json = reader.readline();         fulldata = string.valueof(json);         log.v("myapp","resultsdata" + fulldata);          newslist = new arraylist<string>();         newslist2 = new arraylist<string>();         newslist3 = new arraylist<string>();         imagelist = new arraylist<string>();           jsonobject obj = new jsonobject(json);             jsonobject objdata = obj.getjsonobject("data");         jsonarray jarray = objdata.getjsonarray("results");           if(jarray.length() < 1) loadlastresults();          for(int t = 0; t < 1; t++){                 resultsdict = jarray.getjsonobject(t);               hometeam = resultsdict.getstring("hometeam");               awayteam = resultsdict.getstring("awayteam");               homescore = resultsdict.getstring("homescore");               awayscore = resultsdict.getstring("awayscore");               attendance = resultsdict.getstring("attendance");               division = resultsdict.getstring("division");                log.v("lc","hometeam" + hometeam);               log.v("lc","awayteam" + awayteam);               log.v("bgthread", "loaded results");             }      } catch (clientprotocolexception e) {         // todo auto-generated catch block         e.printstacktrace();     } catch (ioexception e) {         // todo auto-generated catch block         e.printstacktrace();     } catch (jsonexception e) {         // todo auto-generated catch block         e.printstacktrace();     }      }   public void loadlastresults(){      resultsfeedrequest = "" + chosenleagueid + "" + chosenteamid + "&limit=31&timestamp=" + unixtimestamp;     resultsfeedurl = "" + resultsfeedrequest;          string myhash = buildhmacsignature(apikey, resultsfeedurl);      date anothercurdate = new date();       simpledateformat formatter = new simpledateformat("mm");       string curmonth = formatter.format(anothercurdate);        int int = integer.parseint(curmonth);      int monthint = int -1;       curmonth = (string) (string.valueof(monthint));        if (curmonth.equals("1")){          lastmonth = "12";      }          else {         if(curmonth.length() < 2){             lastmonth = "0" + curmonth;         } else {             lastmonth = curmonth;         }     }      log.v("lc","month= " + curmonth);     log.v("lc","lastmonth= " + lastmonth);           httpclient client = new defaulthttpclient();         httppost post = new httppost(resultsfeedurl);          list<namevaluepair> pairs = new arraylist<namevaluepair>();         pairs.add(new basicnamevaluepair("requesttoken", myhash));         pairs.add(new basicnamevaluepair("apiuser", apiuser));          try {             post.setentity (new urlencodedformentity(pairs));             httpresponse response = client.execute(post);             bufferedreader reader = new bufferedreader(new inputstreamreader(response.getentity().getcontent(), "utf-8"));             string json = reader.readline();             fulldata = string.valueof(json);             log.v("myapp","resultsdata" + fulldata);              newslist = new arraylist<string>();             newslist2 = new arraylist<string>();             newslist3 = new arraylist<string>();             imagelist = new arraylist<string>();               jsonobject obj = new jsonobject(json);                 jsonobject objdata = obj.getjsonobject("data");             jsonarray jarray = objdata.getjsonarray("results");                  for(int t = 0; t < 1; t++){                     resultsdict = jarray.getjsonobject(t);                   hometeam = resultsdict.getstring("hometeam");                   awayteam = resultsdict.getstring("awayteam");                   homescore = resultsdict.getstring("homescore");                   awayscore = resultsdict.getstring("awayscore");                   attendance = resultsdict.getstring("attendance");                   division = resultsdict.getstring("division");                    log.v("lc","hometeam" + hometeam);                   log.v("lc","awayteam" + awayteam);                   log.v("bgthread", "loaded last results");                 }           } catch (clientprotocolexception e) {             // todo auto-generated catch block             e.printstacktrace();         } catch (ioexception e) {             // todo auto-generated catch block             e.printstacktrace();         } catch (jsonexception e) {             // todo auto-generated catch block             e.printstacktrace();         }       }      public class posttask extends asynctask<void, string, boolean> {      @override     protected boolean doinbackground(void... params) {         boolean result = false;          loadnewsfeed();         publishprogress("method1_complete");         loadresultsfeed();         publishprogress("method2_complete");         return result;     }       protected void onprogressupdate(string... progress) {         stringbuilder str = new stringbuilder();             (int = 1; < progress.length; i++) {                 str.append(progress[i] + " ");              }     }          @override     protected void onpostexecute(boolean result) {         super.onpostexecute(result);         log.v("bgthread", "begin fillin data");          filldata();     } }    public void filldata(){         if (chosenmethod.equals("team")) {             arrayadapter = new arrayadapter<string>(this, r.layout.single_item, newslist);           string[] mstrings = (string[]) imagelist.toarray(new string[imagelist.size()]);          string[] news = (string[]) newslist3.toarray(new string[newslist3.size()]);           arrayadapter3 = new lazyadapter(this, mstrings, news);               listview list = getlistview();                list.settextfilterenabled(true);                 layoutinflater inflater = (layoutinflater) this.getsystemservice(context.layout_inflater_service );                 view header = inflater.inflate( r.layout.homeheader, list, false);                 view header2 = inflater.inflate( r.layout.homeheader2, list, false);                 view header3 = inflater.inflate( r.layout.homeheader3, list, false);           //setlistadapter (arrayadapter);                   resultsview = layoutinflater.from(getbasecontext()).inflate(r.layout.resultscell,                          null);                 textview hometeam = (textview) resultsview.findviewbyid(r.id.hometeam);                hometeam.settext(hometeam);                 textview awayteam = (textview) resultsview.findviewbyid(r.id.awayteam);                awayteam.settext(awayteam);                 textview homescore = (textview) resultsview.findviewbyid(r.id.homescore);                homescore.settext(homescore);                 textview awayscore = (textview) resultsview.findviewbyid(r.id.awayscore);                awayscore.settext(awayscore);                 textview attendance = (textview) resultsview.findviewbyid(r.id.attendence);                attendance.settext("att:" + attendance);                 textview division = (textview) resultsview.findviewbyid(r.id.division);                division.settext(division);                 log.v("bgthread", "filled results");              adapter = new mergeadapter();             adapter.addview(header);             adapter.addadapter(arrayadapter);             adapter.addview(header2);             adapter.addview(resultsview);             adapter.addview(header3);             adapter.addadapter(arrayadapter3);             setlistadapter(adapter);              log.v("bgthread", "filled merge adapter team");       } else {           arrayadapter = new arrayadapter<string>(this, r.layout.single_item, newslist);             arrayadapter2 = new arrayadapter<string>(this, r.layout.single_item, newslist2);             //arrayadapter3 = new arrayadapter(this, r.layout.complex_item, newslist3);               string[] mstrings = (string[]) imagelist.toarray(new string[imagelist.size()]);              string[] news = (string[]) newslist3.toarray(new string[newslist3.size()]);                arrayadapter3 = new lazyadapter(this, mstrings, news);                   listview list = getlistview();                    list.settextfilterenabled(true);                     layoutinflater inflater = (layoutinflater) this.getsystemservice(context.layout_inflater_service );                     view header3 = inflater.inflate( r.layout.homeheader3, list, false);               //setlistadapter (arrayadapter);                   adapter = new mergeadapter();                 adapter.addview(header3);                 adapter.addadapter(arrayadapter3);                 setlistadapter(adapter);                  log.v("bgthread", "filled merge adapter league");          }  } 

both methods executed sequentially, because they're in 1 asynctask: first loadnewsfeed() executed, if that's finished, loadresultsfeed() executed.

so viewing code example, there's no evidence of 1 or more methods not being executed.


Comments

Popular posts from this blog

django - How can I change user group without delete record -

java - Need to add SOAP security token -

java - EclipseLink JPA Object is not a known entity type -