1. 程式人生 > >FileDownloader-Android 檔案下載引擎,穩定、高效、簡單易用

FileDownloader-Android 檔案下載引擎,穩定、高效、簡單易用

final FileDownloadListener queueTarget = new FileDownloadListener() {
    @Override
    protected void pending(BaseDownloadTask task, int soFarBytes, int totalBytes) {
    }

    @Override
    protected void connected(BaseDownloadTask task, String etag, boolean isContinue, int soFarBytes, int totalBytes
) { } @Override protected void progress(BaseDownloadTask task, int soFarBytes, int totalBytes) { } @Override protected void blockComplete(BaseDownloadTask task) { } @Override protected void retry(final BaseDownloadTask task, final Throwable ex, final int retryingTimes
, final int soFarBytes) { } @Override protected void completed(BaseDownloadTask task) { } @Override protected void paused(BaseDownloadTask task, int soFarBytes, int totalBytes) { } @Override protected void error(BaseDownloadTask task, Throwable e) { } @Override
protected void warn(BaseDownloadTask task) { } }; // 第一種方式 : //for (String url : URLS) { // FileDownloader.getImpl().create(url) // .setCallbackProgressTimes(0) // 由於是佇列任務, 這裡是我們假設了現在不需要每個任務都回調`FileDownloadListener#progress`, 我們只關係每個任務是否完成, 所以這裡這樣設定可以很有效的減少ipc. // .setListener(queueTarget) // .asInQueueTask() // .enqueue(); //} //if(serial){ // 序列執行該佇列 // FileDownloader.getImpl().start(queueTarget, true); // } // if(parallel){ // 並行執行該佇列 // FileDownloader.getImpl().start(queueTarget, false); //} // 第二種方式: final FileDownloadQueueSet queueSet = new FileDownloadQueueSet(downloadListener); final List<BaseDownloadTask> tasks = new ArrayList<>(); for (int i = 0; i < count; i++) { tasks.add(FileDownloader.getImpl().create(Constant.URLS[i]).setTag(i + 1)); } queueSet.disableCallbackProgressTimes(); // 由於是佇列任務, 這裡是我們假設了現在不需要每個任務都回調`FileDownloadListener#progress`, 我們只關係每個任務是否完成, 所以這裡這樣設定可以很有效的減少ipc. // 所有任務在下載失敗的時候都自動重試一次 queueSet.setAutoRetryTimes(1); if (serial) { // 序列執行該任務佇列 queueSet.downloadSequentially(tasks); // 如果你的任務不是一個List,可以考慮使用下面的方式,可讀性更強 // queueSet.downloadSequentially( // FileDownloader.getImpl().create(url).setPath(...), // FileDownloader.getImpl().create(url).addHeader(...,...), // FileDownloader.getImpl().create(url).setPath(...) // ); } if (parallel) { // 並行執行該任務佇列 queueSet.downloadTogether(tasks); // 如果你的任務不是一個List,可以考慮使用下面的方式,可讀性更強 // queueSet.downloadTogether( // FileDownloader.getImpl().create(url).setPath(...), // FileDownloader.getImpl().create(url).setPath(...), // FileDownloader.getImpl().create(url).setSyncCallback(true) // ); } // 序列任務動態管理也可以使用FileDownloadSerialQueue。