Управление заказом загрузки Менеджера загрузки в android

Имеют следующий вариант использования:

Существует несколько файлов для загрузки, например ABCDEF

Когда загрузка начнется, скажем, AB закончен и загрузка C, я хотел бы прервать загрузку C и начать загрузку E

Затем, после завершения E (если нет другого прерывания), продолжайте CD F.

До сих пор из моего исследования существует только метод отмены

downloadManager.remove (downloadReference); Как достичь этого через Менеджер загрузки или есть другой подход? благодаря

private long startDownload(String url) { Uri DownloadUri = Uri.parse(url); String fileName = StorageUtils.getFileNameFromUrl(url); String destination = null; downloadManager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE); DownloadManager.Request request = new DownloadManager.Request( DownloadUri); request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE); request.setAllowedOverRoaming(false); request.setTitle(fileName); request.setDescription("com.example.services"); if (StorageUtils.isSDCardPresent() && StorageUtils.isSdCardWrittenable() && StorageUtils.checkAvailableStorage()) { destination = StorageUtils.SDCARD_ROOT; } try { StorageUtils.mkdir(); } catch (IOException e) { e.printStackTrace(); } request.setDestinationInExternalPublicDir(destination, fileName); downloadReference = downloadManager.enqueue(request); Log.d("Downloader","Start download manager: " + destination + fileName); return downloadReference; } 

Solutions Collecting From Web of "Управление заказом загрузки Менеджера загрузки в android"

Что касается этого ответа, похоже, вы можете отменить загрузку, а затем загрузить остальную часть файла. Например:

Зарегистрируйте BrodcastReciever, чтобы уведомить вас, когда C завершен:

 BroadcastReceiver onComplete = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { //check if it is B that is complete //cancel C // download E //check if it is E that is complete // Open connection to URL. HttpURLConnection connection = (HttpURLConnection) url.openConnection(); // Specify what portion of file to download. connection.setRequestProperty("Range", "bytes=" + downloaded + "-"); // here "downloaded" is the data length already previously downloaded. // Connect to server. connection.connect(); } }; registerReceiver(onComplete, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE)); //download A //download B //download C