إلغاء Asynctask عندما يضغط المستخدم على زر العودة
-
28-09-2019 - |
سؤال
لديّ asynctask أظهرت فيه تقدمًا في onpreexecute ، وأخفيه مرة أخرى في onpostexecute ، شيء مثل
final class UploadTask extends AsyncTask {
ProgressDialog dialog = new ProgressDialog(...);
protected onPreExecute() {
dialog.show();
}
protected onPostExecute() {
dialog.hide();
}
};
يمكن إلغاء الحوار ويختفي بالفعل عندما أضغط على زر الإلغاء أثناء تنفيذ Asynctask.
عندما يحدث هذا ، أود تشغيل بعض التعليمات البرمجية لإلغاء Asynctask أيضًا (في الوقت الحالي ، حتى أنه اعتقد أنه يتقدم بعيدًا ، يستمر Asynctask في الركض ويكمل في النهاية). حاولت اشتقاق صفي من ProgressDialog ثم أفعل
setOnDismissListener(new OnDismissListener() {
@Override public void onDismiss(DialogInterface d) {
/* do something */
}
};
(أو شيء مشابه مع oncancellistener) ، ولكن هذا ببساطة لا يتم استدعاؤه.
أيه أفكار؟ أنا فقط بحاجة إلى بعض الآلية للمستخدم لإلغاء Asynctask قيد التشغيل أثناء عرض ProgressDialog.
المحلول
لم أختبر هذا ، لكن جرب شيئًا كهذا:
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);
}
};
نصائح أخرى
أعتقد أنك تبحث عن هذا: OnCancelled ()
http://developer.android.com/reference/android/os/asynctask.html
لا تنتمي إلى StackOverflow