Android:显示进度对话框然后正确解除

时间:2012-10-17 05:32:34

标签: android dialog

我发现很多人都有类似的问题,但我只是想在显示一个对话框时,我从URL中抓取一些数据,然后在检索数据后正确解除。这是我正在尝试做的事情(这是我的onClick()方法的刷新按钮):

dialog.show();  
// do some work  
dialog.dismiss();

这样做你从来没有真正看过对话框。我尝试过使用额外的线程,例如:

Thread t = new Thread() {
    public void run() {
        dialog.show();
    }
};

但是这样我得到一个错误并且一个力量关闭...... 这样做的最佳方法是什么?

3 个答案:

答案 0 :(得分:0)

对于这类任务,我建议您使用AsyncTask。 Here是帮助您的一个很好的例子。

对于这个问题,因为您正在制作与UI相关的任务,请使用UI线程。

runOnUiThread(new Runnable() {

    @Override
    public void run() {
    // TODO Auto-generated method stub
    //Show or Hide your ProgressDialog
    }
});

答案 1 :(得分:0)

对于您尝试实施的任务:

dialog.show();  
// do some work  
dialog.dismiss();

现在,要实现上述功能,有 AsyncTask 的概念,这是实现线程任务的最佳方式,因为它也被称为 Android中的无痛线程

AsyncTask有4种主要方法:

  1. onPreExecute() - 您可以在此处显示ProgressDialog或ProgressBar。
  2. doInBackground() - 您可以在这里执行/实施后台任务
  3. onProgressUpdate() - 您可以在此处根据从webservice调用或后台任务收到的​​中间结果更新UI
  4. onPostExecute() - 您可以在此处关闭对话框或使进度条不可见。此外,您可以在收到后台任务或Web服务调用的结果后执行要执行的任务。

答案 2 :(得分:0)

尝试使用Activity的runOnUiThread而不是使用Thread。 请检查以下代码段。             runOnUiThread(new Runnable(){

            public void run() {

                    dialog = new ProgressDialog(ctContext);

                    dialog.show();
                }
            }

        });

我认为这会对你有帮助。