android - 控制android中下载管理器的下载顺序

标签 android download download-manager android-download-manager

有一个像下面这样的用例:

有几个文件可以下载,例如A B C D E F

开始下载的时候,说A B下载完,C正在下载,我想中断C的​​下载,开始E的下载

然后,E结束后(如果没有其他中断),继续C D 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;
}

最佳答案

关于 this回答,看起来你可以取消下载然后下载文件的其余部分。例如:

注册一个 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

关于android - 控制android中下载管理器的下载顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19508960/

相关文章:

ruby-on-rails - 在 Rails 3 上设置文件下载权限的最佳方法

java - Android - StringBuffer 不会将从服务器传入的字符串附加到单个字符串

java - Android 播放列表内容未找到

c# - 下载图像并将其保存到 Application.persistentDataPath 会挂起应用程序

PHP 无法在我的服务器上正确下载 apk 文件

java - Android应用程序搜索下载文件夹中的特定文件

java - 下载管理器在网络断开和系统重启的情况下无法恢复下载

http - 下载管理器如何在没有多个请求的情况下通过 HTTP 下载大文件?

android - 什么是工具 :layout_constraintBaseline_creator attribute in ConstraintLayout?

android - ndk-build *** 多目标模式。停止