Android: How to Make For Loop Continue Loop After AsyncTask is finish (onPostExecute) -




i have value more 1, planned make loop execute each value. problem loop looping/continue asynctask not finish yet.

asynctask class

public class server extends asynctask<jsonobject, void, void> {     @override    protected void doinbackground(jsonobject... params) {        .........    }     @override    protected void onpostexecute(void result) {        .........    } } 

activity

@override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_a);      for(int i=0; i<10; i++){        server  myserver = new server();        myserver.execute(i);     } } 

as @cricket_007 commented, loop won't wait asynctask asynchronous , hence loop continues without waiting asynctask finish. i've understood purpose, need this.

you need define interface this.

public interface responselistener {     void responsereceiver(); } 

now modify asynctask this

public class server extends asynctask<jsonobject, void, void> {     public responselistener responselistener;     @override    protected void doinbackground(jsonobject... params) {        // .........    }     @override    protected void onpostexecute(void result) {        // ......... other code        // here's callback function main activity.        responselistener.responsereceiver();     } } 

now activity need this.

public class youractivity extends activity implements httpresponselistener {     public int count = 0;      @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_a);          server  myserver = new server();         myserver.responselistener = this;         myserver.execute(i);     }      // callback method implementation     @override     public void responsereceiver() {         // callback function , gets called when 1 asynctask finishes.         // increase count here , keep track of how many times asynctask has been executed.          //          count++;           // call next asynctask again if count haven't reach 10         if(count <= 10) {             server  myserver = new server();             myserver.responselistener = this;             myserver.execute(i);         }     } } 

hope helps.





wiki

Comments

Popular posts from this blog

Asterisk AGI Python Script to Dialplan does not work -

python - Read npy file directly from S3 StreamingBody -

kotlin - Out-projected type in generic interface prohibits the use of metod with generic parameter -