ProgressDialog未关闭

时间:2014-02-06 09:19:02

标签: android android-ui progressdialog

我设法显示了ProgressDialog,但在长时间运行后我无法关闭它。 有谁知道这里有什么问题。

所有方法都直接在我的活动的onCreate()下。

这是我的代码片段。

private final Handler updateHandler = new Handler() {
        public void handleMessage(final Message msg) {
        dismissWaitDialog();

    };


    public void showWaitDialog(String sTitle, String sMessage){
        waitDialog=new ProgressDialog(this); 
        waitDialog.show(this, sTitle, sMessage);
    }

    public void dismissWaitDialog(){
        waitDialog.dismiss();
    }


public void longrunner(){
    showWaitDialog("Please wait","Please wait");

    new Thread() {
        public void run() {
            do something long
            updateHandler .sendMessage(mymessageinit);
        }
    }.start();  
}

2 个答案:

答案 0 :(得分:2)

使用asyncTask。

doinbackground();

中添加您的代码

preexecute();

中显示对话框 完成doinbackground();

后,

取消进度对话框

答案 1 :(得分:2)

您正在使用静态show()方法返回您丢弃的ProgressDialog实例。您关闭的对话框与显示的对话框不同。要修复,请更改:

waitDialog=new ProgressDialog(this); 
waitDialog.show(this, sTitle, sMessage);

waitDialog = ProgressDialog.show(this, sTitle, sMessage);

正如其他人所说,AsyncTask实际上是执行此类操作的规范方式,而不是直接使用Thread