AsyncTask不能在android中使用ProgressDialog

时间:2011-05-13 09:24:03

标签: android android-asynctask progressdialog

我正在使用asynctask和网站从网站下载数据 我的异步任务代码在

之下
public class getSyncTaskInBackground extends AsyncTask<Void, Void, Void>{
    @Override
    protected Void doInBackground(Void... params) {
        getSynchronizeTask();
        return null;
    }

    @Override
    protected void onPostExecute(Void result) {

        if(progressDialog != null && progressDialog.isShowing()) {
            progressDialog.dismiss();
        }
        displaySynchronizetask();
        super.onPostExecute(result);
    }

    @Override
    protected void onPreExecute() {
        progressDialog = ProgressDialog.show(synchronize.this, "Tasks are synchroning...", "Please wait...");
        super.onPreExecute();
    }

    @Override
    protected void onCancelled() {
        super.onCancelled();
        if(progressDialog != null && progressDialog.isShowing()) {
            progressDialog.dismiss();
        }
    }

}

此线程需要更多时间来完成任务 所以,如果我想在进程之间取消这个线程,那么我已经写了这个按下后退按钮的代码 或者如果进度条已被解雇,那么我想通过调用finish();来关闭活动 我的后退代码如下所示

@Override
public void onBackPressed() { 
    syncThread.cancel(true); //syncThread is the object of getSyncTaskInBackground
if(progressDialog != null && progressDialog.isShowing()) {
    progressDialog.dismiss();
} else {
    finish();   
}
}

现在,当我按下按钮时,progressdialog不会被解雇 我的代码中有任何错误吗?有什么办法可以满足我的需要吗? 请帮帮我

1 个答案:

答案 0 :(得分:4)

您好
你可能想打电话 progressDialog实例上的setCancelable为true: http://developer.android.com/reference/android/app/Dialog.html#setCancelable(boolean

如果您想要取消progressDialog的事件 你可以设置一个onCancelListener http://developer.android.com/reference/android/app/Dialog.html#setOnCancelListener(android.content.DialogInterface.OnCancelListener

希望这会有所帮助