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

标签 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 请求并返回状态代码以指示请求是否成功的方法。

最佳答案

在主线程上运行 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();

三层嵌套当然不是必须的。只是想在这里说明该技术。

关于java - 如何在 Android 上执行 HttpRequest 时显示 ProgressDialog?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5263210/

相关文章:

html - 指出桌面版中的移动优化页面(html)

java - 使用自定义方法将字段映射到嵌套对象

Java org.eclipse.swt.widgets.Text 键入有一个巨大的延迟

java - 使用 WebDriver 单击新打开的选项卡中的链接

java - Android游戏本地多人游戏实现

java - 如何将 onclick 监听器设置为 Canvas ?

java - jar 中找不到 Logback 属性资源

java - Quickblox requestBuilder [或]

http - 具有类似 REST 的业务逻辑的三层架构对于安全 Web 应用程序是否可行或可行?

javascript - 在 Express.js 中从 UInt8Array 发送二进制响应