xutils是android中非常好用的一个文件断点上传下载工具,使用极其简单,现在已经更新到了android xutils3版本了,那么在android中如何实现文件的断点下载以及更新进度条的功能呢?可以参考下面的代码来操作,小编对xutils进行了简单的封装,大家可以直接复制过去使用!
第一步:引入xutils工具,在build.gradle中加入xutils3工具的jar包
implementation 'org.xutils:xutils:3.6.19'
第二步:使用xutils实现断点下载并更新进度条的功能
private Callback.Cancelable cancelable; private isCancel = false; private void download(String fileUrl, String savePath) { File file = new File(savePath); try { file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } RequestParams params = new RequestParams(url); //文件存储位置 params.setSaveFilePath(savePath); //设置是否根据头信息命名文件 params.setAutoRename(false); //设置文件下载断点续传 params.setAutoResume(true); //设置加载的线程池(1~3) params.setExecutor(new PriorityExecutor(2, true)); //快速取消 params.setCancelFast(true); cancelable = x.http().get(params, new Callback.ProgressCallback<File>() { @Override public void onWaiting() { System.out.println("等待下载onWaiting"); } @Override public void onStarted() { System.out.println("开始开始下载"); } @Override public void onLoading(long total, long current, boolean isDownloading) { //如果为true则取消下载,isCancel可能在别的地方有设置值 if (isCancel) { quxiaoxiaozai(); } System.out.println("真实长度" + total); //计算下载百分比 int percent = (int) (((float) current / total) * 100); //此处可以更新UI界面,如进度条,请再主线程中进行 //.... } @Override public void onSuccess(File result) { System.out.print("下载成功.onSuccess"); //此处可以更新UI界面,如进度条,请再主线程中进行 //.... } @Override public void onError(Throwable ex, boolean isOnCallback) { System.out.print("下载错误"+ex.getMessage()); } @Override public void onCancelled(CancelledException cex) { System.out.print("取消下载.onCancelled"); } @Override public void onFinished() { System.out.print("下载完成.onFinished"); //此处可以更新UI界面,如进度条,请再主线程中进行 //.... } }); } public void quxiaoxiaozai() { cancelable.cancel(); isCancel = true; }
xutils的使用就是这么简单,希望能帮助到大家!