AsyncTask和获取/更新数据

时间:2014-09-03 07:07:40

标签: android json android-asynctask

我可以很容易地从数据库中获取数据..但是因为Asynctask在后台运行,所以在调用我的update()方法之前它没有下载数据。

实施例

MyGetDataFromDatebaseCall();

UpdateSomething();

所以这是我的问题。如何使UpdateSomething()方法等到MyGetDatebaseCall()下载了数据? 我已经弹出一个Dialog窗口,所以用户必须按下才能继续,这样可行。我也可以创建2个按钮,因此每个按钮调用一个方法。但他们是如此丑陋的解决方案。我还尝试发送我所在的Activity的实例,并使AsyncTask类尝试更新doInBackground中的Activity类,但显然它无法完成?

2 个答案:

答案 0 :(得分:1)

您应该在doInBackground()中调用MyGetDataFromDatebaseCall()方法,并在下载完所有数据后,可以在onPostExecute()中调用updateSomething()方法。 它会正常工作。

答案 1 :(得分: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");
     }
 }