我有自定义AsyncTask
(ListDownloadTask)下载数据和更新UI。我想在活动开始时永远做到这一点。因此,在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();
}
答案 0 :(得分:0)
尝试使用Handler.sendEmptyMessageDelayed或Handler.sendEmptyMessageAtTime。
答案 1 :(得分:0)
查看此example有点类似于您想要做的事情。不过,最好也使用本地服务。
答案 2 :(得分:0)
创建服务并在您的活动中绑定它。