解除进度对话框

我有一个情况,我加载了一堆图像。 在这个过程中,我正在尝试显示一个进度对话框,直到图像完全加载。 我已经overridedonBackPressed()方法,这样当用户按下后退button时,活动就完成了。

但是,如果我在显示进度对话框时按下后退button,则不会调用后退按键事件。 所以我试着提供progressDialog.setCancelable(true) 。 所以这现在允许我closures进度对话框,但是我的后退关键事件并没有被调用,所以我的活动在后台加载图像。

那么当用户按下后退键时,如何使progressDialog和activity都停止。

Solutions Collecting From Web of "解除进度对话框"

使用Dialog.setOnCancelListener取消后台任务

好。 我终于find了解决办法。

 progressDialog.setCancelable(true); progressDialog.setOnCancelListener(new OnCancelListener() { public void onCancel(DialogInterface dialog) { Log.i("inside on cancel","Cancel Called"); finish(); //If you want to finish the activity. } }); 

加载您的图像在不同的线程。 当用户表示要取消加载时,请设置加载线程处理循环中检查的标志。 您也可以调用加载线程的interrupt()方法来处理线程停留在wait()或sleep()之类的情况。

使用onKeyDown()方法,但是你必须检查对话框是否显示,被按下的button是否是“后退”button,还应该调用super.onKeyDown()以确保默认方法也被执行。

  public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && progressDialog.isShowing()) { // DO WHATEVER YOU WANT } // Call super code so we dont limit default interaction super.onKeyDown(keyCode, event); return true; } 

你能粘贴正确答案的代码?