android - Circle Progress Bar on Fragment is not showing progress -


i'm trying show feedback percentage of have downloaded data server.

the flow goes this:

loginactivity - onsuccess, call service download data - while service working, i've switched user homeactivity

homeactivity -this activities layout holds fragment created called loadingfragment -there method in loadingfragment subscribed event posted service

my problem fragment ui not changing @ whenever event has been posted.

i logged everything, , can see event posting correct data data not being reflected on ui.

below service:

@override public int onstartcommand(intent intent, int flags, final int startid) {      integer id = intent.getintextra("id", 0);     //do sync here     log.i(log_tag, "make rest call retrieve r id: " + id);     mrestclient.getapiservice().getr(id, new callback<list<r>>() {         @override         public void success(list<r> rresponse, response response) {             integer outstanding = routeresponse.size();             integer percentage;             loadingevent loadingevent = new loadingevent();             syncevent syncevent = new syncevent();              log.i(log_tag, "callback success r");             system.out.println("yohellotest");             log.i(log_tag, "begin insertion");              daomaster daomaster = myapp.getdaomaster();             daosession session = daomaster.newsession();             sqlitedatabase db = session.getdatabase();             rdao rdao = session.getrdao();             wdao wdao = session.getwdao();             jdao jdao = session.getjdao();              log.i(log_tag, "--beginning transaction--");             //db.begintransaction();             try {                 int counter = 0;                 for(int = 0; < rresponse.size(); i++) {                     r r = rresponse.get(i);                     rdao.insert(r);                     log.i(log_tag, "inserted r: " + r.getid());                      for(int j = 0; j < r.getw().size(); j++) {                         w w = r.getw().get(j);                         wdao.insert(w);                         log.i(log_tag, "inserted w: " + w.getid());                          for(int k = 0; k < w.getj().size(); k++) {                             j j = w.getj().get(k);                             jdao.insert(j);                             log.i(log_tag, "inserted j: " + j.getjid());                         }                     }                     counter += 1;                     percentage = (int) math.floor((double) counter / outstanding * 100);                     loadingevent.setpercentage(percentage);                     bus.post(loadingevent);                  }                 log.i(log_tag, "finished inserting");                 //db.settransactionsuccessful();             } catch (exception e) {                 log.i(log_tag, "exception happened " + e.getmessage().tostring());                 system.out.println("yo happened, don't know what");             } {                 log.i(log_tag, "--closing transaction--");                 //db.endtransaction();              }              syncevent.setissuccess(true);             syncevent.setstatus(200);             bus.post(syncevent);          }          @override         public void failure(retrofiterror error) {             log.i(log_tag, "rest call failed api");             system.out.println("failtests");          }      });      return start_sticky; } 

fragment subscribed method

@subscribe public void loadingresponse(final loadingevent loadingevent) {     log.i(log_tag, "response loading: " + loadingevent.getpercentage());      if(getactivity() == null)         return;     texttest.settext(loadingevent.getpercentage().tostring());     getactivity().runonuithread(new runnable() {         @override         public void run() {             log.i(log_tag, "updating ui loading text" + loadingevent.getpercentage().tostring());             mcircularprogressbar.setprogress(loadingevent.getpercentage());             texttest.settext(loadingevent.getpercentage().tostring());         }     });  } 

when check logs, see coming in fine, ui not reflecting it. missing here?

edit forgot mention. i'm using library circle progress bar:

circleprogressbar

edit

as of today, still have yet figure out. noticed adapter not being updated when service posts event. previously, context used startservice() getapplicationcontext() loginactivity. thought might have been problem changed instance of homeactivity instead. thought firing service homeactivity have solved problem, i'm still getting same results unfortunately.

okay no 1 tried attempt answering question figured out.

i skimped on documentation part of service class , didn't know executing on main thread. fix this, had run asynctask execute operation in background.

the thing had change in codebase move executing code onstartcommand method asynctask. asynctask initiated onstartcommand , should working fine.

my code looks :

service

@override public int onstartcommand(intent intent, int flags, int startid) {     downloadtask downloadtask = new downloadtask();     downloadtask.execute();     return start_sticky; }  private class downloadtask extends asynctask<void, void, loginevent> {      @override      protected loginevent doinbackground(void... params) {           //code here run operations           //call api, insert db, post events etc...           //      }       @override      protected void onpostexecute(loginevent event) {           //run here want after execution      } } 

you can ignore loginevent event bus post events subscribers.

also, keep in mind if going change views asynctask through bus, make sure subscriber uses runonui execute or else you'll hit runtime exception since you're trying change view other mainthread.


Comments

Popular posts from this blog

how to insert data php javascript mysql with multiple array session 2 -

multithreading - Exception in Application constructor -

windows - CertCreateCertificateContext returns CRYPT_E_ASN1_BADTAG / 8009310b -