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?
Réponses
Trop de publicités?Vous devez charger les données dans une tâche AsyncTask et mettre à jour votre interface une fois le chargement des données terminé.
Vous pouvez même démarrer une nouvelle activité dans la méthode onPostExecute()
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 long processus en cours d'exécution 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 la même (UI) thread dans lequel le processus est en cours d'exécution.
Effectuez les opérations suivantes 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 mettre en œuvre des Exécutables comme suit
public class SyncDataActivity extends Activity implements Runnable
Et enfin une méthode pour effectuer le processus de longue
@Override
public void run() {
//your code here
}