AsyncTask不立即显示进度对话框

时间:2013-07-31 12:54:54

标签: android android-asynctask progressdialog

我在this中使用过建议,但我还有同样的问题。 感谢我的朋友建议使用AsyncTask,但它不适用于我。 什么? 这是我的代码:

DBAsyncTask dba = new DBAsyncTask(this, xmlCommand);
    dba.inProcess = true;
    dba.execute("");
    while (dba.inProcess) {
        try {
            Thread.sleep(200);
            println("wwwwait");
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

    public class DBAsyncTask extends AsyncTask<String, Void, String> {
    public boolean inProcess;

    public DBAsyncTask(ExirCommandRunner commandRunner,XmlNode xmlCommand) {
        this.commandRunner = commandRunner;
        this.xmlCommand = xmlCommand;

    }

    @Override
    protected void onPostExecute(String result) {
        ExirDebugger.println("onPostExecute");
    }

    @Override
    protected void onPreExecute() {
        showProgress();
    }

    @Override
    protected String doInBackground(String... params) {
    ///my process here 
        closeProgress();
        return null;
    }

任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:3)

Thread.sleep()阻止UI线程,因此无法运行进度对话框。删除它和inProcess轮询机制。此外,使用异步任务和进度对话框还有很多references

答案 1 :(得分:1)

我在AsyncTask中解释了ProgressDialog的详细用法及其解决方案: https://stackoverflow.com/a/17527979/1943671

答案 2 :(得分:1)

应该是这样的:

protected void onPreExecute() {
            super.onPreExecute();
             pDialog = new ProgressDialog(activityContext);
             pDialog.setCancelable(false);
             pDialog.setMessage("Please Wait..");
             pDialog.show();
        }

protected void onPostExecute(String file_url) 
        {
            if(pDialog.isShowing())
            {
                pDialog.cancel();
            }
                }