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?
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();
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
}