取消进度对话框

9
我遇到了这样一种情况,我正在加载大量的图片。在此过程中,我试图显示一个进度对话框,直到图片完全加载完毕。我已经重写了 onBackPressed() 方法,以便当用户按下返回按钮时,活动将被结束。
但是如果在显示进度对话框时按下返回按钮,就不会调用后退键事件。因此,我尝试提供 progressDialog.setCancelable(true)。现在这允许我关闭进度对话框,但我的后退键事件仍然没有被调用,所以我的活动在后台加载图片。
那么,如何在用户按下后退键时停止 progressDialog 和活动呢?
4个回答

7

3
下次请尽量更具体。 - Andro Selva
1
@MarvinLabs:怎么使用这个? - Deepzz

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

3

在不同的线程中加载您的图片。当用户指示要取消加载时,请设置一个标志,在加载线程的处理循环中检查该标志。您还可以调用加载线程的interrupt()方法来处理那些处于wait()或sleep()等待状态的线程。


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

你能复制正确答案的代码吗?

你的答案在哪里?你能停止后台服务吗? - Jaydeep Khamar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接