解雇进度对话框

时间:2011-06-06 09:31:33

标签: android progressdialog background-process

我有一种情况,我正在加载一堆图像。在此过程中,我试图显示进度对话框,直到图像完全加载。我有overrided onBackPressed()方法,这样当用户按下后退按钮时,活动就会完成。

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

因此,当用户按下后退键时,如何同时停止progressDialog和活动。

4 个答案:

答案 0 :(得分:7)

使用Dialog.setOnCancelListener取消后台任务

答案 1 :(得分:7)

确定。我终于找到了解决方案。

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

答案 2 :(得分:3)

将图像加载到其他线程中。当用户指示他们想要取消加载时,设置在加载线程的处理循环中检查的标志。您还可以调用加载线程的interrupt()方法来处理线程卡在wait()或sleep()或其他东西中的情况。

答案 3 :(得分:1)

使用onKeyDown()方法,但是你必须检查对话框是否显示,按下的按钮是否是“后退”按钮,你还应该调用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;
}

您可以粘贴代码以获得正确答案吗?