Frage

Ich habe eine AsyncTask in denen zeige ich eine ProgressDialog im OnPreExecute und verstecken es wieder in OnPostExecute, so etwas wie

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

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

Der Dialog kündbar ist und in der Tat geht weg, wenn ich die Taste Abbrechen drücken während der Ausführung des AsyncTask.

Wenn dies geschieht, würde Ich mag einigen Code ausführen, um die AsyncTask auch abbrechen (gerade jetzt, auch dachte, dass er ProgressDialog weggeht, die AsyncTask läuft weiter und schließt schließlich). Ich habe versucht, meine eigene Klasse von ProgressDialog abzuleiten und dann tun

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

(oder etwas ähnliches mit einem OnCancelListener), aber das einfach nie aufgerufen wird.

Irgendwelche Ideen? Ich brauche nur einen Mechanismus für den Benutzer einen laufenden AsyncTask abzubrechen, während ein ProgressDialog angezeigt wird.

War es hilfreich?

Lösung

Ich habe nicht getestet, sondern versuchen, so etwas wie folgt aus:

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

Andere Tipps

Ich glaube, Sie für diese suchen: onCancelled ()

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top