我正在编写一个应用程序,许多点都会尝试从网站检索帐户信息。我想编写一个函数(“getAccount()
”)执行以下操作:显示进度对话框,检索数据并等待它
- 显示ProgressDialog
- 进行调用的网站
- 等待响应
- 清除ProgressDialog
- 控制返回给调用函数的前四个步骤后完成
我并没有用刚开的一个问题g来自页面的数据;我遇到的问题是整个“显示对话框/等待完成/返回控制到调用函数”部分。 ProgressDialog根本不显示,或者该函数在从站点发出数据请求后立即返回给调用者,而没有给它足够的时间来检索数据。
任何帮助将不胜感激。
编辑:我在下面添加了一些代码,用于AsyncTask。请注意,我在grabURL()中有MsgBox("done")
行;这只是一个Toast调用。当我运行这个代码时,在完成HTTP请求时弹出“完成”。此MsgBox行只存在,所以我可以看到如果grabURL
正在等待GrabURL
完成(它不是)。
public void grabURL() {
new GrabURL().execute();
MsgBox("done");
}
private class GrabURL extends AsyncTask<String, Void, Void> {
private ProgressDialog Dialog = new ProgressDialog(MyContext);
protected void onPreExecute() {
Dialog.setTitle("Retrieving Account");
Dialog.setMessage("We're retrieving your account information. Please wait...");
Dialog.show();
}
protected Void doInBackground(String... urls) {
try {
// Get account info from the website
String resp = GetPage(ThePage); // I have this classed out elsewhere
// Some other code that massages the data
AccountRetrievalSuccess = true;
} catch (Exception e) {
AccountRetrievalSuccess = false;
}
return null;
}
protected void onPostExecute(Void unused) {
Dialog.dismiss();
}
}
当你想要做一个同步调用(这将阻止,并等待返回数据)到网站
的AsyncTask,的AsyncTask,的AsyncTask – Klaus 2011-05-05 18:39:02
你有没有想出解决办法?我想做同样的事情,我很惊讶,我找不到一个简单的解决方案。 http://stackoverflow.com/questions/15179517/show-progressdialog-during-a-network-call-until-its-finished – 2013-03-02 21:18:20