code: public void start() {
          for (BaseDownloadTask task : tasks) {
              task.setListener(target);
  
              if (autoRetryTimes != null) {
                  task.setAutoRetryTimes(autoRetryTimes);
              }
  
              if (syncCallback != null) {
                  task.setSyncCallback(syncCallback);
              }
  
              if (isForceReDownload != null) {
                  task.setForceReDownload(isForceReDownload);
              }
  
              if (callbackProgressTimes != null) {
                  task.setCallbackProgressTimes(callbackProgressTimes);
              }
  
              if (callbackProgressMinIntervalMillis != null) {
                  task.setCallbackProgressMinInterval(callbackProgressMinIntervalMillis);
              }
  
              if (tag != null) {
                  task.setTag(tag);
              }
  
              if (taskFinishListenerList != null) {
                  for (BaseDownloadTask.FinishListener finishListener : taskFinishListenerList) {
                      task.addFinishListener(finishListener);
                  }
              }
  
              if (this.directory != null) {
                  task.setPath(this.directory, true);
              }
  
              if (this.isWifiRequired != null) {
                  task.setWifiRequired(this.isWifiRequired);
              }
  
              task.asInQueueTask().enqueue();
          }
  
          FileDownloader.getImpl().start(target, isSerial);
      }
docs: Start tasks in a queue.
  
  @see #downloadSequentially(BaseDownloadTask...)
  @see #downloadSequentially(List)
  @see #downloadTogether(BaseDownloadTask...)
  @see #downloadTogether(List)