code: public void enqueue(BaseDownloadTask task) {
          final DownloadTaskAdapter downloadTaskAdapter = (DownloadTaskAdapter) task;
          downloadTaskAdapter.assembleDownloadTask();
          FileDownloadList.getImpl().addIndependentTask(downloadTaskAdapter);
          serialQueue.enqueue(downloadTaskAdapter.getDownloadTask());
          listenerManager.addAutoRemoveListenersWhenTaskEnd(downloadTaskAdapter.getId());
          listenerManager.attachListener(downloadTaskAdapter.getDownloadTask(),
                  downloadTaskAdapter.getCompatListener());
      }
docs: Enqueues the given task sometime in the serial queue. If the {@code task} is in the head of
  the serial queue, the {@code task} will be started automatically.