<强> JarvisDownloader 强>
熟悉漫威电影的人都知道贾维斯,他是钢铁侠的智能管家,帮助钢铁侠制造装甲,分析大量数据,协助建模等各种智能工作,可惜在复联2中,贾维斯与灵魂宝石共同结合成视觉,钢铁侠失去了这位如亲人一般的智能AI,后来托尼用F.R.I.D.A.Y代替了贾维斯的工作,但从钢铁侠与周五的互动来看,他只把当星期五做一般的AI,并没有投入如对待贾维斯的感情。
最近复联3上映,中国没有同步上映,真的太可惜了,五一本来还想过去香港看,但想到到时会人生人海还是算了,所以假期闲余时间就撸了个JarvisDownloader,之所以以贾维斯命的名,也是因为我太喜欢贾维斯这个人工智能了,它属于人工智能的顶端啊! JarvisDownloader虽然没有贾维斯那么强大,但在下载文件方面,具备了很多的优点。
<强>主要功能强>
-
<李>支持断点续传下载李>
<李>支持自定义文件夹路径,文件名。李>
<李>支持自定义SQLiteOpenHelper,用于保存下载进度等李>
<李>下载进度回调时自动切换到UI线程,方便更新UI。李>
<李>自动与活动绑定生命周期,无需手动释放李>
<李>活动不可见时,不会更新UI,可见时会自动恢复状态李>
<李>支持查询下载历史列表李>
<强>使用JarvisDownloader 强>
依赖远程库
gradle
存储库{ maven { url“https://jitpack.io” } } 依赖关系{ api的com.github.yuwenque: JarvisDownloader: 0.2.0 } >之前初始化数据库
贾维斯。init(新DefaultDownloadHistoryDBHelper (applicationContext));你也可以自定义一个继承于AbsDownloadHistoryDBHelper的管理类,用于保存下载进度等操作,详细操作请参考<强> DefaultDownloadHistoryDBHelper 强>
权限设置
& lt; uses-permission android: name=" android.permission。互联网”/比; & lt; uses-permission android: name=" android.permission。READ_EXTERNAL_STORAGE”/比; & lt; uses-permission android: name=" android.permission。WRITE_EXTERNAL_STORAGE "/祝辞<强> Jarvis.Downloader构建下载任务强>
请在活动或服务中调用
//构成下载器 贾维斯。下载器下载=Jarvis.with(这).withUrl (“http://pic1.win4000.com/wallpaper/2017-10-11/59dde2bca944f.jpg”);//是否允许ui不可见时继续下载 downloader.allowBackgroundDownload(真正的);//多线程下载数量 downloader.threadCount (3);//设置下载目录,非必须,默认目录为Environment.getExternalStorageDirectory () + File.separator +“贾维斯” downloader.filePath (Environment.getExternalStorageDirectory() +文件。分离器+“贾维斯”);//设置文件名,非必须,但建议手动设置,默认为服务器文件的名字 downloader.fileName (“test.jpg”);//刷新进度的频率(毫秒),最小值为100 downloader.refreshTime (1000);//设置状态监听//假如当前上下文为活动的贾维斯话已经自动帮你回调到主线程了,不需要调用activity.runOnUiThread 下载器。setDownloadListener(新DownloadListener () {/* * *文件下载完毕回调 * @param文件 */@Override 公共空间> Jarvis.with(这) .withUrl (“http://pic1.win4000.com/wallpaper/2017-10-11/59dde2bca944f.jpg”) .allowBackgroundDownload(真正的) .threadCount (3) .filePath (Environment.getExternalStorageDirectory() +文件。分离器+“贾维斯”) .fileName (“test.jpg”) .refreshTime (1000) .setDownloadListener(听众).download (); >之前贾维斯管理下载任务
//异步获取下载历史记录,下载进度请自己计算 Jarvis.getInstance ()。getDownloadedList(新DataCallBacklocalFileRecordBeans) { LocalFileRecordBean fileRecordBean=localFileRecordBeans.get (0);//下载进度 浮动进步=fileRecordBean.getDownloadedLength () * 1.0 f/fileRecordBean.getFileTotalLength (); } });//停止所有下载任务 .pauseAllDownloader Jarvis.getInstance () ();//开始所有下载任务 .startAllDownload Jarvis.getInstance () ();//删除所有下载任务及文件 .forceDeleteAll Jarvis.getInstance () ();//设置下载的线程池长度,如果当前有10个下载任务,//每个任务开启3个线程进行断点续传下载,那么此时只设置20个的话,将有部分下载任务需等待其他线程执行完任务才能开始 Jarvis.getInstance () .initThreadPoolLength (20);
Android断点续传下载器JarvisDownloader的示例