Как загрузить несколько файлов одновременно, используя intentservice в Android?

Я хочу создать сервис, похожий на этот, (ссылка отВот), чтобы загрузить несколько файлов асинхронно в 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();
}

Пользователь может выбрать элементы загрузки средиlistview в разных фрагментах. Моя стратегия заключается в том, что, когда пользователь выбирает элементы и нажимает кнопку загрузки, эти элементы передаются вDownloadTask который отвечает за загрузку файла. Затем задачи загрузки добавляются вtotalDownloadQueue.

Вот несколько вопросов:

Я знаюintentservice запускается определенным действием. Но я хочу создать фоновый сервис для просмотраtotalDownloadQueueесли есть новыеdownloadtask доступно, затем вызывается некоторый поток для выполнения задач.

Что побочный эффект, если я сделал это для этого подгонятьintentservice?

Какой альтернативный класс я должен использовать? Пожалуйста предоставьтеsample code вместе с объяснением, спасибо.

Как я знаю, инициализация потоков вызывается только один раз. Если я запускаю службу в начале приложения, и потоки должны быть уничтожены, когда пользователь завершает приложение. (Я имею в виду, когда онswipe out окно.) Существуют ли потоки после выхода пользователя из приложения?

Если этот подход все еще не может решить проблему с асинхронной загрузкой файлов? Какую другую стратегию я должен принять? Пожалуйста, предоставьте пример кода или ссылку, чтобы я мог изменить его.

Я потратил 7 дней, чтобы разобраться со сложным требованием, любая помощь, пожалуйста!

Ответы на вопрос(3)

Ваш ответ на вопрос