2014-09-03 68 views
-1

我可以很容易地從數據庫中獲取數據。但是因爲Asynctask在後臺運行,所以在我調用update()方法之前它沒有下載數據。AsyncTask和獲取/更新數據

例子。

MyGetDataFromDatebaseCall();

UpdateSomething();

所以這是我的問題。如何讓UpdateSomething()方法等到MyGetDatebaseCall()下載了數據? 我做了一個彈出的對話框窗口,所以用戶必須按好,才能繼續,並且工作。我也可以創建2個按鈕,以便每個按鈕調用一個方法。但他們是如此醜陋的解決方案。我也嘗試發送一個我正在使用的Activity的實例,並使AsyncTask類嘗試和更新doInBackground中的Activity類,但顯然它不能完成?

+3

爲什麼不在調用asyncTask的onPostExecute方法時調用UpdateSomething()? – Devrim 2014-09-03 07:09:24

回答

1

你應該叫MyGetDataFromDatebaseCall在doInBackground()和下載所有數據後()方法,你可以調用updateSomething在onPostExecute()()方法。 它會正常工作。

+0

對不起,這個愚蠢的問題,但我是新來的。 Thx爲答案。 – 2014-09-03 07:33:39

0

你有沒有看過文檔?

private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> { 
    protected Long doInBackground(URL... urls) { 
     int count = urls.length; 
     long totalSize = 0; 
     for (int i = 0; i < count; i++) { 
      totalSize += Downloader.downloadFile(urls[i]); 
      publishProgress((int) ((i/(float) count) * 100)); 
      // Escape early if cancel() is called 
      if (isCancelled()) break; 
     } 
     return totalSize; 
    } 

    protected void onProgressUpdate(Integer... progress) { 
     setProgressPercent(progress[0]); 
    } 

    protected void onPostExecute(Long result) { 
     showDialog("Downloaded " + result + " bytes"); 
    } 
}