데이터를 다운로드하고 UI를 업데이트하는 사용자 지정 AsyncTask
(ListDownloadTask)이 있습니다. 나는 활동이 열리는 동안 그것을 영원히 만들고 싶다. AsyncTask 작업을 수행 한 후에는 일정을 잡아야합니다. 시도 사이에는 지연이 있습니다.Looping AsyncTask
타이머를 사용하려고했지만 UI 스레드에서 new ListDownloadTask().execute();
을 호출해야합니다.
이제 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