在Android上执行HttpRequest时如何显示ProgressDialog?

时间:2011-03-10 17:11:15

标签: java android http progressdialog

我有以下代码,我通过查看Android开发人员文档中的示例获得了该代码。但是,它实际上并不显示对话框。如果我调用dismiss(),它会在调用doLogin()完成后显示对话框,然后永远不会消失。我不需要它是花哨的,我只是想在请求执行时显示一些东西。

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

    int r = app.doLogin();

    dialog.dismiss();

doLogin()是一个对服务器发出HTTP请求的方法,它返回一个状态代码来指示请求是否成功。

1 个答案:

答案 0 :(得分:4)

在主线程上运行HTTP请求绝不是个好主意。旋转一个工作线程,使用Handler在UI线程中关闭对话框。像这样:

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

final Handler h = new Handler(); //will execute on the main thread

new Thread(new Runnable(){
public void run()
{
    app.doLogin();
    h.post(new Runnable()
    {
        public void run()
        {
              dialog.dismiss();
        }
    }
}
}).start();

当然,没有必要进行三级嵌套。试图在这里说明这种技术。