循环AsyncTask
问题描述:
我有自定义AsyncTask
(ListDownloadTask)下载数据和更新UI。我想在活动开放的时候永远做到这一点。所以在AsyncTask完成工作之后,它必须被安排。尝试之间有延迟。循环AsyncTask
我试图使用计时器,但问题是new ListDownloadTask().execute();
必须从UI线程调用。
现在我有计时器,生成消息Handler
。这对我来说似乎很难看。什么是最佳做法?
@Override
public void onCreate(Bundle savedInstanceState) {
// ...
new ListDownloadTask().execute();
}
private static final long DOWNLOAD_UPDATES_DELAY = 5 * 1000;
private final Timer mUpdatesDownloaderTimer = new Timer(true);
Handler mDownloadTrigger = new Handler(new Handler.Callback() {
public boolean handleMessage(Message message) {
new ListDownloadTask().execute();
return true;
}
});
private void scheduleUpdatesDownload() {
mUpdatesDownloaderTimer.schedule(new TimerTask() {
@Override
public void run() {
mDownloadTrigger.sendEmptyMessage(0);
}
}, DOWNLOAD_UPDATES_DELAY);
}
private class ListDownloadTask extends AsyncTask<Long, String, Integer> {
@Override
protected void onPostExecute(Integer result) {
//...
scheduleUpdatesDownload();
}
答
尝试Handler.sendEmptyMessageDelayed或Handler.sendEmptyMessageAtTime。
答
创建一个服务并将其绑定到您的活动中。
感谢您的回答。我应该从一开始就使用服务。 – Dmitry 2011-02-09 07:57:16