我有一种情况,我正在加载一堆图像。在此过程中,我试图显示进度对话框,直到图像完全加载。我有overrided
onBackPressed()
方法,这样当用户按下后退按钮时,活动就会完成。
但是如果在显示进度对话框时按下后退按钮,则不会调用后退键事件。所以我尝试提供progressDialog.setCancelable(true)
。所以这现在允许我解除进度对话框,但我的后退键事件仍未被调用,所以我的活动在后台加载图像。
因此,当用户按下后退键时,如何同时停止progressDialog
和活动。
答案 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;
}
您可以粘贴代码以获得正确答案吗?