2

我在这方面使用了建议,但我还有同样的问题。感谢我的朋友对使用 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;
    }

谁能帮我?

4

3 回答 3

3

Thread.sleep()阻塞 UI 线程,因此进度对话框无法运行。删除它和inProcess轮询机制。此外,还有很多关于使用带有进度对话框的异步任务的参考资料。

于 2013-08-01T06:05:04.073 回答
1

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

于 2013-07-31T12:58:05.423 回答
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();
            }
                }
于 2013-07-31T13:00:07.730 回答