web-dev-qa-db-fra.com

Comment afficher la boîte de dialogue de progression avant de démarrer une activité dans Android?

Comment afficher une boîte de dialogue de progression avant de démarrer une activité (c'est-à-dire pendant que l'activité charge des données) dans Android?

34
Neha

Vous devez charger les données dans un AsyncTask et mettre à jour votre interface lorsque le chargement des données est terminé.

Vous pouvez même démarrer une nouvelle activité dans la méthode onPostExecute() de votre AsyncTask.

Plus précisément, vous aurez besoin d'une nouvelle classe qui étend AsyncTask:

public class MyTask extends AsyncTask<Void, Void, Void> {
  public MyTask(ProgressDialog progress) {
    this.progress = progress;
  }

  public void onPreExecute() {
    progress.show();
  }

  public void doInBackground(Void... unused) {
    ... do your loading here ...
  }

  public void onPostExecute(Void unused) {
    progress.dismiss();
  }
}

Ensuite, dans votre activité, vous feriez:

ProgressDialog progress = new ProgressDialog(this);
progress.setMessage("Loading...");
new MyTask(progress).execute();
64
Matthew Willis

Lorsque vous démarrez un processus de longue durée sur Android, il est toujours conseillé de le faire sur un autre thread. Vous pouvez ensuite utiliser le thread d'interface utilisateur pour afficher une boîte de dialogue de progression. Vous ne pouvez pas afficher une boîte de dialogue de progression dans le même thread (UI) dans lequel le processus s'exécute.

Procédez comme suit pour démarrer votre processus

pd = ProgressDialog.show(this, "Synchronizing data", "Please wait...");
Thread t = new Thread(this);
t.start();

Pour cela, votre activité doit implémenter Runnable comme suit

public class SyncDataActivity extends Activity implements Runnable

Et enfin une méthode pour effectuer le processus de longue durée

@Override
public void run() {
      //your code here
}
3
Arun