我正在編寫一個應用程序,許多點都會嘗試從網站檢索帳戶信息。我想編寫一個函數(「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