博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
XUtils开源框架的使用(HttpUtils支持多线程断点续传)
阅读量:6239 次
发布时间:2019-06-22

本文共 2944 字,大约阅读时间需要 9 分钟。

  •  XUtils项目下载地址:https://github.com/wyouflf/xUtils
  • XUtils中包含的四大模块:

       1、DbUtils模块

       2、ViewUtils模块

       3、HttpUtils模块:

        • 支持同步,异步方式的请求;
        • 支持大文件上传,上传大文件不会oom;
        • 支持GET,POST,PUT,MOVE,COPY,DELETE,HEAD,OPTIONS,TRACE,CONNECT请求;
        • 下载支持301/302重定向,支持设置是否根据Content-Disposition重命名下载的文件;
        • 返回文本内容的请求(默认只启用了GET请求)支持缓存,可设置默认过期时间和针对当前请求的过期时间。

       4、BitmapUtils模块

  • 这里只是运行HttpUtils模块来进行多线程下载因为该模块支持断点续传,用起来非常方便!

  布局文件:

 

1 
2
13
18
23
28
33
View Code

 

  MainActivity:

1 package com.ahu.lichang.httputils_multithreaddownload; 2  3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.view.View; 6 import android.widget.ProgressBar; 7 import android.widget.TextView; 8 import android.widget.Toast; 9 10 import com.lidroid.xutils.HttpUtils;11 import com.lidroid.xutils.exception.HttpException;12 import com.lidroid.xutils.http.ResponseInfo;13 import com.lidroid.xutils.http.callback.RequestCallBack;14 15 import java.io.File;16 17 public class MainActivity extends Activity {18     private TextView tv_failure;19     private TextView tv_progress;20     private ProgressBar pb;21     @Override22     protected void onCreate(Bundle savedInstanceState) {23         super.onCreate(savedInstanceState);24         setContentView(R.layout.activity_main);25         tv_failure = (TextView) findViewById(R.id.tv_failure);26         tv_progress = (TextView) findViewById(R.id.tv_progress);27         pb = (ProgressBar) findViewById(R.id.pb);28     }29 30     public void download(View view){31         String path = "http://172.23.13.179:8080/QQPlayer.exe";32         HttpUtils httpUtils = new HttpUtils();33         httpUtils.download(path,//下载地址34                 "storage/sdcard/QQPlayer.exe",//下载的数据保存的路径和文件名35                 true,//是否开启断点续传36                 true,//如果服务器响应头中包含了文件名,那么下载完毕后自动重命名37                 new RequestCallBack
() {
//侦听下载状态38 @Override39 public void onSuccess(ResponseInfo
responseInfo) {40 Toast.makeText(MainActivity.this,responseInfo.result.getPath(),Toast.LENGTH_SHORT).show();41 }42 43 @Override44 public void onFailure(HttpException e, String s) {45 tv_failure.setText(s);46 }47 48 @Override49 public void onLoading(long total, long current, boolean isUploading) {50 super.onLoading(total, current, isUploading);51 pb.setMax((int) total);52 pb.setProgress((int) current);53 tv_progress.setText(current * 100 / total + "%");54 }55 }56 );57 }58 }
View Code

  权限:

1     
2
3

  运行结果:

 

 

转载于:https://www.cnblogs.com/ahu-lichang/p/6602279.html

你可能感兴趣的文章
我的友情链接
查看>>
查看Windows上开启的服务
查看>>
linux 常用命令
查看>>
Java 加解密技术系列之 DH
查看>>
VirtualBox三种联网方式
查看>>
Python中使用pickle持久化(保存)对象
查看>>
python3 pelican 搭建静态博客
查看>>
Android 自定义组合控件小结
查看>>
Android学习进阶路线导航线路(Android源码分享)
查看>>
解决Maven和Mybatis整合时打包漏掉mapper的xml文件及其它资源
查看>>
PHP面向对象访问控制public,protected,private
查看>>
MyBatis学习笔记二:增删改查
查看>>
SaltStack安装Tomcat
查看>>
java随机数
查看>>
数据库学习之--Oracle 架构与MySQL架构对比
查看>>
curl 证书访问https站点
查看>>
一篇文章入门Python生态系统
查看>>
Webapp下ClassLoader 加载机制
查看>>
Linux 计算机系统硬件核心知识总结
查看>>
php高级研发或架构师必了解---很多问题面试中常问到!
查看>>