如果触摸或超过待机时间,则在AsyncTask结束之前解除ProgressDialog

时间:2014-03-15 16:24:56

标签: android android-asynctask android-progressbar

我有AsyncTask这种形式

private class AsyncOperation extends AsyncTask<Void, Void, Void> {

        @Override
        protected void onPreExecute(){
            pDialog = new ProgressDialog(MyActivity.this);
            pDialog.setMessage("Waiting...");
            pDialog.show();
        }
        @Override
        protected Void doInBackground(Void... params) {
           ...
          return null
         }

        protected void onPostExecute(Void params){
            pDialog.dismiss();


        }

如果用户触摸屏幕,则在任务结束前关闭等待对话框,如果屏幕在操作期间进入待机状态,如果我返回应用程序并且任务尚未完成,则同样的问题。

我该如何解决这个问题? 此外,任何改进我在holo App上执行异步操作的方式的建议都将受到赞赏。

2 个答案:

答案 0 :(得分:1)

您必须将ProgresDialog的可取消属性设置为false:

protected void onPreExecute(){
        pDialog = new ProgressDialog(MyActivity.this);
        pDialog.setMessage("Waiting...");
        pDialog.setCancelable(false);
        pDialog.show();
}    

这可确保当您点击对话框以外的任何其他位置时,progressDialog会消失。

答案 1 :(得分:0)

您可以使用此设置可取消属性。

对话框对话框;

@覆盖

    protected void onPreExecute(){
        super.onPreExecute();

        dialog = ProgressDialog.show(Login.this,"Connecting...", "Please wait...", false,true);

    }