下载功能是一个很常见的功能,在很多app中都有这种功能的存在。很多应用的做法是:写一个单线程或者多线程下载,写一个DownloadThread建立HTTP请求用来下载存储文件,存储到一个地方,然后写一个UI界面,用于展示文件列表。如果需求多了呢?加个控制,暂停、取消、重新下载、文件分类,再加上一些其他所谓的特定需求,加上数据库的操作管理会让你头大,况且下载功能,在很多细节方面还是需要处理很多的情况的(顺便说下,想看下载方面的深入研究,请看我的其他几篇博客)。
如果有一种方法,不用你写DownloadThread,不用你写HTTP请求,不用你写数据库,不用你自己操作控制,只需要你写一个界面,还能保证展示的内容是对的,BUG少,开发成本低,你会不会选择?
答案就是使用DownloadProvider来实现自己的下载管理功能。
大家可能对于DownloadProvider来说,都比较熟悉,app通过DownloadManager来进行下载文件,那么实际进行下载和管理文件的就是DownloadProvider,他的目录在packages/providers/DownloadProvider文件夹下面,那么我们怎么用这个DownloadProvider呢?
首先,在DownloadProvider里面有两个URI,一个是"content://downloads/my_downloads/"一个是"content://downloads/all_downloads/",其中"content://downloads/all_downloads/"是获取手机里面全部的下载资源数据&#x