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

  • 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"/>

  运行结果:

时间: 2024-08-11 01:35:25

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

安卓系统下的多线程断点下载实现2利用开源框架XUtils

使用开源框架可以大大降低开发的难度,减少开发的周期,并且bug也少的多,软件运行起来更稳定. xUtils简介 xUtils 包含了很多实用的android工具. xUtils 支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响- xUitls 最低兼容android 2.2 (api level 8) 下载地址:https://github.com/wyouflf/xUtils 下面是一个demo: public class Ma

android 开源框架xUtils

首先查到的博客地址:  http://zxs19861202.iteye.com/blog/2003241 Github地址: https://github.com/wyouflf/xUtils xUtils简介 xUtils 包含了很多实用的android工具. xUtils 最初源于Afinal框架,进行了大量重构,使得xUtils支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响... xUitls最低兼容android 2.

Android中的多线程开源框架

AsyncTask.ORMLite.Volley.ImageLoader 线程池: 线程池的优点: 1 重用线程,避免过分开销 2 控制线程最大的并发数 3 对线程进行简单的管理 AsyncTask=线程池+handler ORMLite  线程池 加锁syncronized  保证增删改查的时候,数据的安全. volley 项目地址 :https://github.com/smanikandan14/Volley-demo(1)  JSON,图像等的异步下载:(2)  网络请求的排序(sche

Android 开源框架 ( 五 ) xUtils --- Android 里的 ORM IOC聚合型框架

xUtils同Afinal一样属于聚合型框架, 大而全,但是越容易牵一发而动全身.所以不推荐使用,只做了解即可.应付手头临时项目. Android 开源框架 ( 四 ) Afinal --- Android 里的 ORM IOC聚合型框架 一.Xutils 介绍 Xutils是基于afinal开发的,但是比afinal稳定性提高了不少.xUtils 最初源于Afinal框架,进行了大量重构,使得xUtils支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的ORM,更多的事

C#各种常用开源框架-支持开源!分享!

下面罗列了开发及学习过程中所涉及的开源类库的列表! AForge.NET Accord.NET NAudio nVLC Speex C# WebServer FFmpeg FFmpeg.NET Flowplayer iSpy ZoneMinder ONVIF Device Manager Google GData GMap.NET Json.NET Dynamic Json Hammock AutoMapper SocialKit / LightRest Microsoft Enterprise

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

扯淡 这是一款轻量.高效的.NET C#数据库访问框架(ORM).查询接口借鉴 Linq(但不支持 Linq).借助 lambda 表达式,可以完全用面向对象的方式就能轻松执行多表连接查询.分组查询.聚合查询.插入数据.批量删除和更新等操作. .NET Core 发布至今挺久的了,由于我本人不是很赶潮流,因此,都没去学习它,只是从“道听途说”中了解到 .NET Core 把很多功能模块化,分离开来,同时也发展跨平台.最近貌似很火,我也该追随大家的步伐了,要不真的 OUT 了.学习离不开练习,练习

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

1.volley 项目地址 https://github.com/smanikandan14/Volley-demo (1) JSON,图像等的异步下载: (2) 网络请求的排序(scheduling) (3) 网络请求的优先级处理 (4) 缓存 (5) 多级别取消请求 (6) 和Activity和生命周期的联动(Activity结束时同时取消所有网络请求) 2.android-async-http 项目地址:https://github.com/loopj/android-async-http

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

1.volley 项目地址 https://github.com/smanikandan14/Volley-demo (1)  JSON,图像等的异步下载: (2)  网络请求的排序(scheduling) (3)  网络请求的优先级处理 (4)  缓存 (5)  多级别取消请求 (6)  和Activity和生命周期的联动(Activity结束时同时取消所有网络请求) 2.android-async-http 项目地址:https://github.com/loopj/android-asyn

android开源框架

1.volley 项目地址 https://github.com/smanikandan14/Volley-demo (1)  JSON,图像等的异步下载: (2)  网络请求的排序(scheduling) (3)  网络请求的优先级处理 (4)  缓存 (5)  多级别取消请求 (6)  和Activity和生命周期的联动(Activity结束时同时取消所有网络请求) 2.android-async-http  项目地址:https://github.com/loopj/android-asy