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() {

@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的使用就是这么简单,希望能帮助到大家!

来源网站:太平洋学习网,转载请注明出处:http://www.tpyyes.com/a/android/1001.html

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐