DownloadTask build() { if (path == null) { path = FileDownloadUtils.getDefaultSaveFilePath(url); } @NonNull DownloadTask.Builder builder; if (pathAsDirectory) { builder = new DownloadTask.Builder(url, path, null); } else { builder = new DownloadTask.Builder(url, new File(path)); } builder.setMinIntervalMillisCallbackProcess(minIntervalMillisCallbackProgress); builder.setPassIfAlreadyCompleted(!forceReDownload); builder.setWifiRequired(isWifiRequired); for (Map.Entry<String, String> entry : headerMap.entrySet()) { builder.addHeader(entry.getKey(), entry.getValue()); } builder.setAutoCallbackToUIThread(autoCallbackToUIThread); DownloadTask task = builder.build(); if (tag != null) task.setTag(tag); if (keyOfTag != null) task.addTag(keyOfTag, tagWithKey); return task; } }
public Builder toBuilder(String anotherUrl, Uri anotherUri) { final Builder builder = new Builder(anotherUrl, anotherUri) .setPriority(priority) .setReadBufferSize(readBufferSize) .setFlushBufferSize(flushBufferSize) .setSyncBufferSize(syncBufferSize) .setSyncBufferIntervalMillis(syncBufferIntervalMills) .setAutoCallbackToUIThread(autoCallbackToUIThread) .setMinIntervalMillisCallbackProcess(minIntervalMillisCallbackProcess) .setHeaderMapFields(headerMapFields) .setPassIfAlreadyCompleted(passIfAlreadyCompleted); // check whether the filename is special set from method. if (Util.isUriFileScheme(anotherUri) // only if another uri is file-scheme && !new File(anotherUri.getPath()).isFile() // another uri is not file already && Util.isUriFileScheme(uri) // only if uri is file-scheme // only if filename is provided and not provided through uri && filenameHolder.get() != null && !new File(uri.getPath()).getName().equals(filenameHolder.get()) ) { builder.setFilename(filenameHolder.get()); } return builder; }
public DownloadTask bind(@NonNull DownloadTask.Builder taskBuilder) { if (set.headerMapFields != null) taskBuilder.setHeaderMapFields(set.headerMapFields); if (set.readBufferSize != null) taskBuilder.setReadBufferSize(set.readBufferSize); if (set.flushBufferSize != null) taskBuilder.setFlushBufferSize(set.flushBufferSize); if (set.syncBufferSize != null) taskBuilder.setSyncBufferSize(set.syncBufferSize); if (set.wifiRequired != null) taskBuilder.setWifiRequired(set.wifiRequired); if (set.syncBufferIntervalMillis != null) { taskBuilder.setSyncBufferIntervalMillis(set.syncBufferIntervalMillis); } if (set.autoCallbackToUIThread != null) { taskBuilder.setAutoCallbackToUIThread(set.autoCallbackToUIThread); } if (set.minIntervalMillisCallbackProcess != null) { taskBuilder .setMinIntervalMillisCallbackProcess(set.minIntervalMillisCallbackProcess); } if (set.passIfAlreadyCompleted != null) { taskBuilder.setPassIfAlreadyCompleted(set.passIfAlreadyCompleted); } final DownloadTask task = taskBuilder.build(); if (set.tag != null) task.setTag(set.tag); boundTaskList.add(task); return task; }
assertThat(queueSet.isAutoCallbackToUIThread()).isEqualTo(autoCallbackToUIThread); builder.bind(taskBuilder); verify(taskBuilder).setAutoCallbackToUIThread(eq(autoCallbackToUIThread));
.setSyncBufferIntervalMillis(4) .setMinIntervalMillisCallbackProcess(5) .setAutoCallbackToUIThread(true) .setWifiRequired(true) .build();
private void initTask() { task = new DownloadTask .Builder(DemoUtil.URL, DemoUtil.getParentFile(this)) .setFilename("notification-file.apk") // if there is the same task has been completed download, just delete it and // re-download automatically. .setPassIfAlreadyCompleted(false) .setMinIntervalMillisCallbackProcess(80) // because for the notification we don't need make sure invoke on the ui thread, so // just let callback no need callback to the ui thread. .setAutoCallbackToUIThread(false) .build(); }