Question

J'ai un AsyncTask dans lequel je montre un ProgressDialog dans le OnPreExecute, et le cacher à nouveau dans onPostExecute, quelque chose comme

final class UploadTask extends AsyncTask {
   ProgressDialog dialog = new ProgressDialog(...);

   protected onPreExecute() {
      dialog.show();
   }
   protected onPostExecute() {
      dialog.hide();
   }
};

La boîte de dialogue est résiliable et même disparaît lorsque j'appuie sur le bouton d'annulation pendant l'exécution du AsyncTask.

Dans ce cas, je voudrais lancer un code pour annuler la AsyncTask ainsi (en ce moment, même pensé qu'il ProgressDialog va, le AsyncTask continue à fonctionner et se termine par la suite). J'ai essayé de tirer ma propre classe de ProgressDialog puis faire

setOnDismissListener(new OnDismissListener() {
@Override public void onDismiss(DialogInterface d) {
   /* do something */
   }
};

(ou quelque chose de similaire avec un OnCancelListener), mais cela devient tout simplement jamais appelé.

Toutes les idées? Je viens besoin d'un mécanisme pour l'utilisateur d'annuler une course AsyncTask alors qu'un ProgressDialog montre.

Était-ce utile?

La solution

Je n'ai pas testé, mais essayer quelque chose comme ceci:

    final class UploadTask extends AsyncTask implements OnDismissListener{
       ProgressDialog dialog = new ProgressDialog(...);

       protected onPreExecute() {
           dialog.setOnDismissListener(this);
          dialog.show();
       }
       protected onPostExecute() {
          dialog.hide();
       }

       @Override
        public void onDismiss(DialogInterface dialog) {
            this.cancel(true);
        }
};

Autres conseils

Je pense que vous cherchez ceci: onCancelled ()

http://developer.android.com/reference/android/os/ AsyncTask.html

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top