我可以很容易地从数据库中获取数据..但是因为Asynctask在后台运行,所以在调用我的update()方法之前它没有下载数据。
实施例
MyGetDataFromDatebaseCall();
UpdateSomething();
所以这是我的问题。如何使UpdateSomething()方法等到MyGetDatebaseCall()下载了数据? 我已经弹出一个Dialog窗口,所以用户必须按下才能继续,这样可行。我也可以创建2个按钮,因此每个按钮调用一个方法。但他们是如此丑陋的解决方案。我还尝试发送我所在的Activity的实例,并使AsyncTask类尝试更新doInBackground中的Activity类,但显然它无法完成?
答案 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");
}
}