我有以下代码,这是通过查看android开发人员文档中的示例得到的。但是,它实际上并不显示对话框。如果我去掉dissive()调用,它会在dologin()调用完成后显示对话框,然后再也不会消失。我不需要太花哨,我只想在请求执行时显示一些内容。
ProgressDialog dialog = ProgressDialog.show(GameList.this, "",
"Connecting. Please wait...", true);
int r = app.doLogin();
dialog.dismiss();
dologin()是一个对服务器发出http请求的方法,它返回一个状态代码来指示请求是否成功。
最佳答案
在主线程上运行http请求从来都不是一个好主意。旋转工作线程,使用处理程序在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();
当然,不需要三层嵌套。只是想说明一下这项技术。