2011-06-24 1 views
0

Je souhaite appeler un service Web toutes les 5 secondes en 1 minute. Moyens dans 1 min je veux appeler le webservice 12 fois. Je veux le faire de manière asynchrone.Appel de service Web Android de manière asynchrone toutes les 5 secondes

class AddStringTask extends AsyncTask<Void, String, Void> { 

    private final ProgressDialog dialog = new ProgressDialog(HomeScreen.this); 

    protected void onPreExecute() { 

    } 

    protected Void doInBackground(Void... unused) 
    { 

     return(null); 
    } 

    @Override 
    protected void onPostExecute(Void unused) { 

      this.dialog.dismiss(); 

    } 
} 

Je sais que cela peut être fait avec ce code. bt doinbackground ne s'exécute qu'une seule fois. Je ne peux pas implémenter la minuterie aussi dans la méthode doInBackground.

Répondre

1

Un moyen très simple consiste à implémenter un TimerTask qui crée et exécute votre AsyncTask. Utilisation de votre ci-dessus AddStringTask:

Timer timer = new Timer(); 
timer.schedule(new TimerTask() { 
    public void run() { 
     new AddStringTask().execute(); 
    } 
}, 0, 5000); 

S'il vous plaît noter que même si vous implémenter dans un service, le code de service continue à fonctionner sur le fil de l'interface principale, vous avez donc besoin d'un thread séparé ou une tâche async faire la bloquer les opérations pour vous.

+0

La minuterie bloque mon écran d'activité. –

+0

Je ne sais pas comment une minuterie pourrait bloquer votre thread principal, où construisez-vous? – Nick

+0

Dans Oncreate Method cher .. –

Questions connexes