Android AsynTask取消进度对话框

Jov*_*van 17 android progressdialog android-asynctask

在我的Android应用程序中,我使用AsynTask with Progress Dialog(请等待登录...)用于使用我的网页登录用户(AsynTask内的Web服务功能)

我想在用户点击设备上的后退按钮时解除进度对话框并取消AsynTask.

我无法找到那种中断AsynTask的例子.我读了abouth cancel(boolean)但我不知道如何从UI调用.

任何人都可以给我一些想法

谢谢

sha*_*c19 20

    ProgressDialog progressDialog = ProgressDialog.show(ActivityName.this,
            "Title",
            "Message");
    progressDialog.setCancelable(true);
    progressDialog.setOnCancelListener(new OnCancelListener() {

        @Override
        public void onCancel(DialogInterface dialog) {
            // TODO Auto-generated method stub
            // Do something...
        }
    });
Run Code Online (Sandbox Code Playgroud)

setCancelable(true)方法设置是否可以使用BACK键取消对话框.您可以通过setOnCancelListener - > onCancel方法执行完成代码.


Vla*_*nov 9

public MyActivity extends Activity {


  private MyAsyncTask task;

  public onCreate() {
     task = new MyAsyncTask(); // MyAsyncTask has a progress dialog and dismiss it
     // in an overrided cancel() method 
     task.execute();
  }

  private void handleOnBackButton() {
     task.cancel(true);
  }
Run Code Online (Sandbox Code Playgroud)

然后你需要的是handleOnBackButton()在用户按下或回家时打电话.你可以用onKeyDown()方法来做.


Kar*_*iya 5

您只需将ProgressDialog设置为可取消.当您单击"返回"按钮时它将消失.像这样 :

dialog.setCancelable(true);
Run Code Online (Sandbox Code Playgroud)

您必须覆盖onBackPressed以关闭ProgressDialog以及取消AsyncTask

@Override
public void onBackPressed() {
YourAsyncTaskObject.cancel(true);
YourProgressDialog.dismiss();
return;
}
Run Code Online (Sandbox Code Playgroud)