Annuler ProgressDialog et arrêter le fil
J'ai un thread qui exécute plusieurs opérations en une fois et je voudrais l'arrêter lorsque l'utilisateur annule la ProgressDialog
.
public void run() {
//operation 1
//operation 2
//operation 3
//operation 4
}
Ce thread s'exécute une seule fois, donc je ne peux pas mettre en œuvre une boucle pour vérifier si il fil doit toujours être en cours d'exécution.
Voici mon ProgressDialog :
//Wait dialog
m_dlgWaiting = ProgressDialog.show(m_ctxContext,
m_ctxContext.getText(R.string.app_name),
m_ctxContext.getText(R.string.msg_dlg_analyse_pic),
true, //indeterminate
true,
new OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
m_bRunning = false;
}
});
Comme je ne sais pas comment faire pour arrêter le fil, serait-il correct de la séquence, le fil des opérations par le biais d'une boucle pour voir si elle doit encore être en cours d'exécution, ou est-il un meilleur moyen ?
public void run() {
int op = 0;
while(m_bRunning) {
switch(op) {
case 0 :
//operation 1
break;
case 1 :
//operation 2
break;
case 2 :
//operation 3
break;
case 3 :
//operation 4
break;
}
op++;
}
}
Même avec cette solution, si il y a trop d'opérations dans le fil, il pourrait être difficile de faire la séquence des opérations. Est-il un meilleur moyen pour y parvenir ?
OriginalL'auteur Jerec TheSith | 2013-03-12
Vous devez vous connecter pour publier un commentaire.
Utilisez des rappels ou des AsyncTask
http://developer.android.com/reference/android/os/AsyncTask.html
Oui, vous pouvez l'utiliser en tant que membre, mais vous devez l'initialiser à chaque fois avant de l'exécuter (une instance peut être exécuté qu'une fois).
OriginalL'auteur Yaroslav Mytkalyk
Vous pouvez utiliser Asynctask comme ci-dessous
Et quand vous voulez annuler votre processus d'arrière-plan ne ci-dessous
OriginalL'auteur Nirali