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