Como baixar vários arquivos simultaneamente usando o intentservice no Android?

Eu quero criar um serviço semelhante a este (referência deAqui), para baixar vários arquivos de forma assíncrona no Android.

public static class DownloadingService extends IntentService {
public static String PROGRESS_UPDATE_ACTION = DownloadingService.class
        .getName() + ".newDownloadTask";
private ExecutorService mExec;
private CompletionService<NoResultType> mEcs;
private LocalBroadcastManager mBroadcastManager;
private List<DownloadTask> mTasks;

public DownloadingService() {
    super("DownloadingService");
    mExec = Executors.newFixedThreadPool( 3 ); // The reason to use multiple thread is to download files asynchronously. 
    mEcs = new ExecutorCompletionService<NoResultType>(mExec);
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    return super.onStartCommand(intent, flags, startId);
}

@Override
protected void onHandleIntent(Intent intent) {

  while(true)
  {
    if( cursor <= totalDownloadQueue.size() -1) {   //totalDownloadQueue is a static ArrayList which contains numerous DownloadTask
        mEcs.submit(totalDownloadQueue.get(cursor)); 
        cursor++; // The variable cursor is also a static int variable. 
    }
  }// continuously observing the totalDownloadQueue. If any download item is added. Then the thread are dispatched to handle that.
    mExec.shutdown();
}

O usuário pode selecionar itens de download entrelistview&nbsp;em diferentes fragmentos. Minha estratégia é que, conforme o usuário selecione os itens e pressione o botão de download, esses itens sejam passados paraDownloadTask&nbsp;responsável por baixar um arquivo. Em seguida, as tarefas de download são adicionadas aototalDownloadQueue.

Aqui estão algumas perguntas:

Eu conheço ointentservice&nbsp;é acionado por alguma ação definida. Mas o que eu quero é criar um serviço de segundo plano assistindo aototalDownloadQueue, se houver algum novodownloadtask&nbsp;está disponível, então alguns threads são chamados para operar as tarefas.

Qual é o efeito colateral se eu fiz isso para este personalizadointentservice?

Que classe alternativa devo usar? Por favor, providenciesample code&nbsp;junto com a explicação, obrigado.

Como eu sei, a inicialização dos threads é chamada apenas uma vez. Se eu iniciar o serviço no início do aplicativo e os encadeamentos forem eliminados quando o usuário encerrar o aplicativo (quero dizer quando eleswipe out&nbsp;a janela.) Os threads existem depois que o usuário sai do aplicativo?

Se essa abordagem ainda não conseguir resolver o problema de baixar arquivos de forma assíncrona? Que outra estratégia devo adotar? Forneça algum código ou referência de exemplo para que eu possa modificá-lo.

Passei 7 dias lidando com a exigência complexa, qualquer ajuda, por favor!