Xuitls的断点续传

来源:互联网 发布:mac怎么移动文件 编辑:程序博客网 时间:2024/05/18 03:59
本文主要写的是Xutils的断点续传

这里主要用的是Xutils的第三方库文件:下载自己问度娘。

1.创建对象
 HttpUtils http = new HttpUtils();

2.调用下载方法
 http.download(url,下载路径+文件名,是否支持断点续传,是否自动改名,回调类)

3.实现回调类方法
 public void onLoading(long total, long current, booleanisUploading){
        //下载进行中,更新进度
}

public void onSuccess(ResponseInfo<File>responseInfo){
     //下载完成
}

public void onFailure(HttpExceptionerror, String msg) {
      //下载失败
}
以上就完成了。

代码如下:

      
     public class MainActivity extends Activity {

    private ProgressBar pb;
    private TextView tv;
    private HttpUtils mHttp;
    private long mTotal;
    private HttpHandler<File> mDownloadHandler;
    private static final String URL = "http://dldir1.qq.com/qqfile/qq/QQ8.4/18380/QQ8.4.exe";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 创建httpUtils对象
        mHttp = new HttpUtils();
        //初始化控件
        initView();
        //点击事件
        initEvent();
        //Xutils方法
        startDownload();
    }
    
    private void startDownload() {
        /**
         * 第一个参数为要下载的地址URL
         * 第二个参数为你要下载到的地址
         * 第三个参数为是否支持断点续传
         * 第四个参数为是否自动改名
         * 第五个参数为回掉类
         */
        mDownloadHandler = mHttp.download(URL, "/mnt/sdcard/qq.exe", true, true, new RequestCallBack<File>() {
            /**
             * 实现回掉类的方法
             */
            //下载进行中的时候调用此方法
            public void onLoading(long total, long current, boolean isUploading) {
                mTotal = total;
                String totalSize = Formatter.formatFileSize(MainActivity.this, total);
                String currentSize = Formatter.formatFileSize(MainActivity.this, current);
                tv.setText(currentSize + "/" + totalSize);

                // 计算并显示进度值
                int percent = (int) (current * 100 / total);
                pb.setProgress(percent);
            }
            //下载成功的时候调用此方法
            public void onSuccess(ResponseInfo<File> responseInfo) {
                if(responseInfo.result.length()==mTotal){
                    tv.setText("下载完成");
                }
            }
            //下载失败的时候调用此方法
            public void onFailure(HttpException error, String msg) {
                //下载失败
                tv.setText("下载失败");
            }
        });
    }

    private void initEvent() {
        tv.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                //获取下载状态
                boolean cancelled = mDownloadHandler.isCancelled();
                if (cancelled) {
                    startDownload();
                } else {
                    mDownloadHandler.cancel();
                }
            }
        });
    }

    private void initView() {
        tv = (TextView) findViewById(R.id.tv);
        pb = (ProgressBar) findViewById(R.id.pb);
        pb.setMax(100);
    }
}
0 0