code: public void enqueue(BaseDownloadTask task) {
          synchronized (finishCallback) {
              if (paused) {
                  pausedList.add(task);
                  return;
              }
  
              try {
                  mTasks.put(task);
              } catch (InterruptedException e) {
                  e.printStackTrace();
              }
          }
      }
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.