【问题标题】:Download multiple concurrent files下载多个并发文件
【发布时间】:2019-12-08 23:46:45
【问题描述】:

我需要一次下载多个文件(大约 100 个文件)

下载是否同步无关紧要

重要的是下载所有文件。

我的获取网址和文件名的代码:

for (int i = 0; i < AssetData.size(); i++){
        String item = AssetData.get(i).toString();
        String name[] = item.split("/");
        String Url = setting.Main_Domain+"/"+item;// Url for downloading
        String fname =name[name.length-1] ;// File name like: test.txt
        File file2 =  new File(getFilesDir(),item.replace(fname,"")); // Parent File like: data/user/0/com.test.app/data/
        if(!file2.exists()){file2.mkdir();}

    }

文件的大小很小,总共大约 3 兆字节。

【问题讨论】:

    标签: java android okhttp


    【解决方案1】:

    您可以使用此库来实现您的代码。您可以同时下载多个文件,也可以在一个完成后开始下一次下载。

    https://github.com/MindorksOpenSource/PRDownloader

    这就是你的代码的样子

    int downloadId = PRDownloader.download(url, dirPath, fileName)
                            .build()
                            .setOnStartOrResumeListener(new OnStartOrResumeListener() {
                                @Override
                                public void onStartOrResume() {
    
                                }
                            })
                            .setOnPauseListener(new OnPauseListener() {
                                @Override
                                public void onPause() {
    
                                }
                            })
                            .setOnCancelListener(new OnCancelListener() {
                                @Override
                                public void onCancel() {
    
                                }
                            })
                            .setOnProgressListener(new OnProgressListener() {
                                @Override
                                public void onProgress(Progress progress) {
    
                                }
                            })
                            .start(new OnDownloadListener() {
                                @Override
                                public void onDownloadComplete() {
    
                                }
    
                                @Override
                                public void onError(Error error) {
    
                                }
                            });
    

    是不是很简单。 :)

    【讨论】:

    • 嗨,实际上我正在使用 PRDownloader 库来下载图像。当多个图像下载过程完成与否时,它很简单,但无法处理。在第一个图像开始下载时调用一次 onDownloadComplete 回调。其余图像正在后台下载。如何发现所有文件/图像都已下载
    【解决方案2】:

    在我看来,ion 对您来说是一个非常优雅的解决方案。它易于使用,并且有很多未来,例如连接池和通过 HTTP 连接重用...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多