我有以下代码,这是我通过查看 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/