Загрузка нескольких файлов с использованием службы по динамическому URL-адресу одновременно

У меня есть вопрос о загрузке нескольких файлов с помощью службы в Android. Из поиска Google все рекомендуются службы намерений, но в моем случае у меня есть список файлов в представлении списка, если пользователь выбирает любой файл, он будет загружен с уведомлением о ходе выполнения. Если пользователь нажимает кнопку «Назад» в службе активности, необходимо запустить фон, Пользователь может выбрать несколько файлов, в каждом файле есть отдельная панель уведомлений для прогресса

мой вопрос

  1. Если я выбираю службу намерений, как я могу динамически передавать URL-адрес файла, когда пользователь выбирает файл, если я вызываю службу запуска с намерением для каждого URL-адреса, он не будет загружаться параллельно

  2. Если я выберу службу и привяжу ее, служба привязки документов не поможет в течение длительного времени.

  3. какой метод лучше всего использовать и как передать динамический URL-адрес в службу и обновить список URL-адресов загрузки

Спасибо




Ответы (1)


Используйте Диспетчер загрузки Android.

Диспетчер загрузок — это системная служба, которая обрабатывает длительные загрузки по протоколу HTTP. Клиенты могут запросить загрузку URI в определенный файл назначения. Диспетчер загрузки будет выполнять загрузку в фоновом режиме, заботясь об HTTP-взаимодействиях и повторяя попытки загрузки после сбоев или при изменении подключения и перезагрузках системы.

В вашей деятельности, где вы определили свой список:

     listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position,
                                long id) {

            String urlOfFileToDownload = (String) parent.getItemAtPosition(position);
            // Object item = parent.getItemAtPosition(position);

            DownloadManager downloadmanager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
            Uri uri = Uri.parse(urlOfFileToDownload);
            DownloadManager.Request request = new DownloadManager.Request(uri);
            Long reference = downloadmanager.enqueue(request);
        }
    });
person Clive Seebregts    schedule 29.05.2016
comment
Менеджер загрузок предлагает индикатор выполнения уведомления? мне нужно постоянное уведомление это поддержка? это поддержка одновременно? - person Manikandan; 30.05.2016
comment
Да, поддерживает одновременную загрузку файлов, и ход загрузки будет отображаться на панели уведомлений. - person Clive Seebregts; 30.05.2016
comment
Должен ли я использовать настраиваемую панель уведомлений для приостановки и отмены действия? - person Manikandan; 29.06.2016