我有一個問題。我有一個asynctask,其中我連接到一個Web服務,將數據放入數據庫。這沒關係,它的工作原理。但我有一個問題,我想單擊REFRESH(多數民衆贊成時,我做的Web服務)後,進度條..Android - 用webservice緩慢ProgressDialog AsyncTask
當我刷新,需要2秒,而我的屏幕凍結,然後開始進度條稍稍消失,但是在進度條開始之前完成。
這裏是的AsyncTask的代碼
private class tareaActualizar extends AsyncTask<Void, Void, Boolean> {
private static final String DEBUG_TAG = "actualizo";
private ProgressDialog pd = new ProgressDialog(ShamanOperativoActivity.this);
@Override
protected void onCancelled() {
Log.i(DEBUG_TAG, "onCancelled");
pd.dismiss();
}
@Override
protected void onPostExecute(Boolean result) {
Log.i(DEBUG_TAG, "onPostExecute");
pd.dismiss();
}
@Override
protected void onPreExecute() {
pd.setMessage("Actualizando...");
pd.show();
}
@Override
protected void onProgressUpdate(Void... values) {
}
@Override
protected Boolean doInBackground(Void... params) {
webService();
tv2 = resultado.toString(); //Obtengo el string resultado del WebService en tv2
//Obtengo la hora actual
insertoEnBD();
// Inserto en base de datos (Si es que pase por el Web Service)
Boolean res = true;
return res;
}
}
Webservice的是Web服務的連接如的方法,而「InsertoBD」是,當我把數據導入數據庫..感謝
我看不出有什麼錯在你的AsyncTask實現,如何你是否知道你的任務在進度條開始之前完成。根據你的描述,除了2秒的凍結,我會說這是我的期望從你的AsyncTask:進度條顯示 - >任務快速完成 - >進度條被駁回。 – yorkw
因爲我的UI是刷新和更改數據..後,我看到進度條開始.. –
我會建議註釋掉doInBackground()中的所有代碼,並簡單地做一個Log.i(標籤,「做某事」)看看UI刷新是否實際來自你的doInBackground()。通過這樣做,您還可以檢查Logcat以查看是否在onPreExecute()之後調用doInBackground()。我想你的代碼中可能還有其他地方在主線程中執行同樣繁重的任務,這解釋了單擊刷新按鈕時2秒鐘凍結。 – yorkw