Android的AsynTask与进度对话框取消

在我的Android应用程序,我使用AsynTask与进度对话框(请等待login…)用户login我的网页(AsynTask内的Web服务function)

当用户点击设备上的返回button时,我想closures进度对话框并取消AsynTask。

我找不到这样的例子,打断AsynTask。 我读了关于取消(布尔),但我不知道如何从UI调用。

任何人都可以给我想法。

谢谢

Solutions Collecting From Web of "Android的AsynTask与进度对话框取消"

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

然后,所有你需要的是当用户回头或回家时调用handleOnBackButton() 。 你可以使用onKeyDown()方法。

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

setCancelable(true)方法设置对话框是否可用BACK键取消。 您可以通过setOnCancelListener – > onCancel方法执行整理代码。

你只需要设置ProgressDialog可取消。 当你点击“返回”button时,它将消失。 喜欢这个 :

 dialog.setCancelable(true); 

您必须重写onBackPressed以closuresProgressDialog以及取消AsyncTask

 @Override public void onBackPressed() { YourAsyncTaskObject.cancel(true); YourProgressDialog.dismiss(); return; } 

我发现后退button事件消耗了'show'的ProgressDialog,所以Activity不会取消。 我不得不添加一个监听器到对话框中:

 mProgress = ProgressDialog .show(this, getText(R.string.progress_title), getText(R.string.progressing), true, true, new OnCancelListener() { public void onCancel(DialogInterface pd) { handleOnBackButton(); } }); 

没关系。

我发现使用Activity的对话框pipe理更清晰,并在onCreateDialog中添加onDismissListener。 解雇听众可以取消任务。 不需要参照对话框,这是我们唯一需要听取用户取消的地方。