我需要以这种形式为我的应用制作动态下载管理器:
从自定义列表中删除完整下载
喜欢这个
首先我使用this site code进行线程下载。
然后,我创建一个自定义列表视图,每次用户点击“下载”按钮时,都会添加该下载链接。
但我有两个问题:
现在,问题是: 我如何为我的应用程序制作动态下载管理器,可以添加具有暂停/恢复功能的列表的新链接,并从自定义列表中删除下载的项目?
修改 - 添加自定义列表视图
此链接中的自定义列表视图:https://github.com/saeid-pm/Custom-Listview
答案 0 :(得分:7)
最后大约1年后(:D)这是最好的解决方案之一:
使用this library添加到带库的项目
或Android Studio依赖项:
dependencies {
compile 'com.mani:ThinDownloadManager:1.3.0'
}
它是最好的和快速(任何)文件下载库之一,太简单易用和自定义。
例如在我的问题中(1年前),i wanted to have Multiple-File-Download
可以轻松指定线程池大小:
ThinDownloadManager downloadManager = new ThinDownloadManager(DOWNLOAD_THREAD_POOL_SIZE);
//DOWNLOAD_THREAD_POOL_SIZE = number of threads.
古德勒克!
编辑以回答@Bhuvi,(设置目标下载文件)
定义文件目的地:
String fileName ="file name";
File root = android.os.Environment.getExternalStorageDirectory();
File dir = new File(root.getAbsolutePath() +`subfolder name`);
if (dir.exists() == false) {
dir.mkdirs();
}
final Uri destinationUri = Uri.parse(dir + fileName);
然后是setDestinationURI
ThinDownloadManager
(您的路径)
downloadRequest =
new DownloadRequest(downloadUri)setDestinationURI(destinationUri).setPriority(DownloadRequest.Priority.HIGH)
编辑@ farhad.kargaran回答 - 2017/12/06
当我看到ThinDownloadManager存储库时,最后一个版本是1.3.0
但是根据@ farhad.kargaran的回答,还有版本1.4.0
,我还没有测试新版本的功能,但你可以根据@ farhad.kargaran的回答测试新版本。
答案 1 :(得分:0)
假设您没有自定义适配器并且您正在使用与该教程中提供的AndroidListClient.java类似的内容(此假设基于您对代码示例的文章的引用)。
所以,而不是:
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list, initialList);
this.setListAdapter(adapter);
创建从Base Adapter扩展的自定义适配器。 (如果您已经有自定义适配器,请发布代码)。
在您的适配器中,使用viewHolder模式,并且不会在每次添加项目时对您的列表进行充气。
您可以在此处找到有关自定义适配器的更多信息 http://www.vogella.com/tutorials/AndroidListView/article.html#adapterown_example
答案 2 :(得分:0)
有同样的问题。这是我如何解决它(我不再有代码,所以我们必须到期): (我有一个数据库,因此管理下载相对简单。给了他们项目ID)
我完全不知道如何暂停/恢复下载。
我使用静态变量取消下载(例如,如果(下载== 7)返回,则在读取服务器的字节时取消否7)。
干杯!
答案 3 :(得分:0)
使用
dependencies {
compile 'com.mani:ThinDownloadManager:1.4.0'
}
但是在其github中它表示最后一个版本是1.3.0但实际上暂停和恢复功能是在1.4.0版本中并且github readMe不是最新的,请注意setDownloadResumable()中的以下代码
DownloadRequest downloadRequest = new DownloadRequest(downloadUri)
.addCustomHeader("Auth-Token", "YourTokenApiKey")
.setRetryPolicy(new DefaultRetryPolicy())
.setDownloadResumable(true)
对于multipart,您应该在初始化下载管理器时执行以下代码:
int availableProcessors = getRuntime().availableProcessors();
downloadManager = new ThinDownloadManager(availableProcessors);