• 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. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:tools="http://schemas.android.com/tools"
  4. android:id="@+id/activity_main"
  5. android:layout_width="match_parent"
  6. android:layout_height="match_parent"
  7. android:paddingBottom="@dimen/activity_vertical_margin"
  8. android:paddingLeft="@dimen/activity_horizontal_margin"
  9. android:paddingRight="@dimen/activity_horizontal_margin"
  10. android:paddingTop="@dimen/activity_vertical_margin"
  11. tools:context="com.ahu.lichang.httputils_multithreaddownload.MainActivity"
  12. android:orientation="vertical">
  13. <Button
  14. android:text="HttpUtils多线程下载"
  15. android:onClick="download"
  16. android:layout_width="wrap_content"
  17. android:layout_height="wrap_content" />
  18. <TextView
  19. android:id="@+id/tv_failure"
  20. android:layout_width="wrap_content"
  21. android:layout_height="wrap_content"
  22. android:hint="下载失败提示" />
  23. <ProgressBar
  24. android:id="@+id/pb"
  25. style="@android:style/Widget.ProgressBar.Horizontal"
  26. android:layout_width="match_parent"
  27. android:layout_height="wrap_content" />
  28. <TextView
  29. android:id="@+id/tv_progress"
  30. android:text="下载进度"
  31. android:layout_width="wrap_content"
  32. android:layout_height="wrap_content" />
  33. </LinearLayout>

  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. @Override
  22. 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<File>() {//侦听下载状态
  38. @Override
  39. public void onSuccess(ResponseInfo<File> responseInfo) {
  40. Toast.makeText(MainActivity.this,responseInfo.result.getPath(),Toast.LENGTH_SHORT).show();
  41. }
  42.  
  43. @Override
  44. public void onFailure(HttpException e, String s) {
  45. tv_failure.setText(s);
  46. }
  47.  
  48. @Override
  49. 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. }

  权限:

  1. <!--XUtils要添加两个权限-->
  2. <uses-permission android:name="android.permission.INTERNET"/>
  3. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

  运行结果:

XUtils开源框架的使用(HttpUtils支持多线程断点续传)的更多相关文章

  1. 实现android支持多线程断点续传下载器功能

    多线程断点下载流程图: 多线程断点续传下载原理介绍: 在下载的时候多个线程并发可以占用服务器端更多资源,从而加快下载速度手机端下载数据时难免会出现无信号断线.电量不足等情况,所以需要断点续传功能根据下 ...

  2. 反射机制及开源框架xUitls的使用,使用HttpUtils通过断点续传下载文件

    反射: Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法: 对于任意一个对象,都能够调用它的任意一个方法和属性 Java反射机制主要提供下面几种用途: 1•在运行时判断 ...

  3. [开源].NET高性能框架Chloe.ORM-完美支持.NET Core

    扯淡 这是一款轻量.高效的.NET C#数据库访问框架(ORM).查询接口借鉴 Linq(但不支持 Linq).借助 lambda 表达式,可以完全用面向对象的方式就能轻松执行多表连接查询.分组查询. ...

  4. 各种Android UI开源框架 开源库

    各种Android UI开源框架 开源库 转 https://blog.csdn.net/zhangdi_gdk2016/article/details/84643668 自己总结的Android开源 ...

  5. 值得推荐的android开源框架

    1.volley 项目地址https://github.com/smanikandan14/Volley-demo (1) JSON,图像等的异步下载: (2) 网络请求的排序(scheduling) ...

  6. [转]六款值得推荐的android(安卓)开源框架简介

    本文转自:http://www.jb51.net/article/51052.htm .volley 项目地址 https://github.com/smanikandan14/Volley-demo ...

  7. 6个值得推荐的Android开源框架简介(转)

    虽然我们在做app的时候并不一定用到框架,但是一些好框架的思想是非常有学习价值的 1.volley 项目地址 https://github.com/smanikandan14/Volley-demo  ...

  8. 六款值得推荐的android(安卓)开源框架简介(转)

    1.volley 项目地址 https://github.com/smanikandan14/Volley-demo (1)  JSON,图像等的异步下载: (2)  网络请求的排序(scheduli ...

  9. 几款值得推荐的android(安卓)开源框架简介

    技术不再多,知道一些常用的.不错的就够了. 该文章自有需要的时候,mark一下. 顺序不代表排名,根据自己需求进行选择即可. 1.volley 项目地址 https://github.com/sman ...

随机推荐

  1. 科学计算三维可视化---Mayavi入门(Mayavi介绍和安装)

    Mayavi介绍 是基于VTK开发的可视化软件(更加高效),Mayavi完全由python编写,方便使用,而且可以使用python编写扩展,嵌入到用户程序中 安装要求 VTK >pip3 ins ...

  2. redis sentinel集群

    ip分布情况: sentinel-1/redis 主 10.11.11.5 sentinel-2/redis 从 10.11.11.7 sentinel-3/redis 从 10.11.11.8 ha ...

  3. AT1983 BBQ Hard

    洛谷题目链接:BBQ Hard 题意翻译 有 n 个数对 \((A_i​; B_i​)\),求出 \[\sum_{i=1}^{n}\sum_{j=i + 1}^{n}{a_i+b_i+a_j+b_j ...

  4. Linux_用户管理&权限管理

    2017年1月11日, 星期三 Linux_用户管理&权限管理 1.  Linux用户管理&权限管理 终端的概念: tty  查看登录的终端 类型  user group    oth ...

  5. [整理]LumiSoft.Net 开源组件

    http://www.lumisoft.ee/lsWWW/download/downloads/Net/info.txt SVN: https://svn.lumisoft.ee:8443/svn/L ...

  6. 使用转义防御XSS

    使用转义防御XSS 在输出的时候防御XSS即对用户输入进行转义,XSS的问题本质上还是代码注入,HTML或者javascript的代码注入,即混淆了用户输入的数据和代码.而解决这个问题,就需要根据用户 ...

  7. Indepence Mode 备份 weblogic

    一般不在administation server 停止这个模式 管理服务器挂了,不会影响其他服务器的运行 备份一个domain copy  一个  /bin  把启动的脚本做一个修改  里面的doma ...

  8. AopProxyUtils.getSingletonTarget(Ljava/lang/Object;)Ljava/lang/Object;大坑

    这个问题太坑了,试了好多个版本,都是依赖冲突导致的, https://blog.csdn.net/qq_15003505/article/details/78430595 最后找到这一篇博客解决了,就 ...

  9. 一步一步搭建oracle 11gR2 rac+dg之环境准备(二)【转】

    一步一步在RHEL6.5+VMware Workstation 10上搭建 oracle 11gR2 rac + dg 之环境准备 (二) 一步一步搭建oracle 11gR2 rac+dg之环境准备 ...

  10. 在Mac上搭建ReactNative开发环境

    1.安装Homebrew,   Mac系统的包管理器,用于安装NodeJS和一些其他必需的工具软件. /usr/bin/ruby -e "$(curl -fsSL https://raw.g ...