我有自定義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();
}
感謝您的回答。我應該從一開始就使用服務。 – Dmitry 2011-02-09 07:57:16