【问题标题】:Cancel AsyncTask with Progress Dialog button使用进度对话框按钮取消 AsyncTask
【发布时间】:2014-11-10 14:46:03
【问题描述】:

我需要使用进度对话框中的按钮取消我的 AsyncTask。

我已经用按钮创建了进度对话框。 这里是:

@Override
protected void onPreExecute() {
    pDialog = new ProgressDialog(DSDactivity.this);
    pDialog.setMessage(getResources().getString(R.string.pDialog));
    pDialog.setCancelable(false);
    pDialog.setButton("Cancel", new OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            pDialog.dismiss();
            asyncCodelist.cancel(true);

        }
    });
    pDialog.show();
}

我有两个问题:

  1. 当我点击“取消”时,进度对话框被删除,但异步 任务继续做他正在做的事情

  2. Eclipse 给了我这种减弱:

AlertDialog 类型的方法 setButton(CharSequence, DialogInterface.OnClickListener) 是 已弃用

【问题讨论】:

  • 你已经在制作 pDialog.setCancelable(false);那你怎么能拒绝呢?
  • 这里是你要找的东西:stackoverflow.com/a/7734109/4232337
  • @Shadow 进程对话框正常工作,问题是另一个。
  • @NSimon 我已经看过了。但别以为我能帮上忙,请在进度对话框上创建一个按钮。
  • stackoverflow.com/a/12115431/609782 你可以设置一个按钮,在onClickListener()你可以通过myTask.cancel();取消你的任务

标签: android android-asynctask progressdialog


【解决方案1】:
@Override
protected void onPreExecute() {
  pDialog = new ProgressDialog(DSDactivity.this);
  pDialog.setMessage(getResources().getString(R.string.pDialog));
  pDialog.setCancelable(true);
  pDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
      myTask.cancel(true);
      dialog.dismiss();
    }
  }
}

然后,正如我的链接所说,创建您的 AsyncTask 并存储它:

MyAsyncTask myTask=null;

并像这样执行它:

myTask = new MyAsyncTask();
myTask.execute();

【讨论】:

【解决方案2】:
  1. Asynctask 不会仅由 myTask.cancel(true); 完全停止

如文件所述:

 To ensure that a task is cancelled as quickly as possible, you should always check the return value of isCancelled() periodically from doInBackground(Object[]), if possible (inside a loop for instance.)

More Here

  1. setButton() 方法现在已被 ProgressDialog 弃用,因此发出警告。不过它肯定会起作用。

【讨论】:

    猜你喜欢
    • 2011-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多