// TODO
 private void initDownloadTasks(long length, boolean acceptRanges) {
   mDownloadTasks.clear();
   if (acceptRanges) {
     List<ThreadInfo> threadInfos = getMultiThreadInfos(length);
     // init finished
     int finished = 0;
     for (ThreadInfo threadInfo : threadInfos) {
       finished += threadInfo.getFinished();
     }
     mDownloadInfo.setFinished(finished);
     for (ThreadInfo info : threadInfos) {
       mDownloadTasks.add(new MultiDownloadTask(mDownloadInfo, info, mDBManager, this));
     }
   } else {
     ThreadInfo info = getSingleThreadInfo();
     mDownloadTasks.add(new SingleDownloadTask(mDownloadInfo, info, this));
   }
 }