Abbrechen AsyncTask, wenn der Benutzer drückt Taste zurück
-
28-09-2019 - |
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.
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