Skip to content

Sakuragi/DownloadDemo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

7894b37 · Aug 10, 2017

History

8 Commits
Aug 9, 2017
Aug 9, 2017
Aug 9, 2017
Aug 9, 2017
Aug 10, 2017
Aug 9, 2017
Aug 9, 2017
Aug 9, 2017
Aug 9, 2017
Aug 9, 2017

Repository files navigation

DownloadDemo

效果图:

image

断点续传原理

断点续传是指当下载中断后,再次下载时可以从上次的下载进度继续下载。由此我们可以分析得出实现这个功能,我们需要实时保存下载进度,这样在下次继续下载的时候再把下载进度读取出来,继续下载。我们主要需要解决俩个问题:一、从上次的位置继续下载。二、从上次写入的文件继续写入。 通过HTTP的GET请求中的setRequestProperty()方法可以告诉服务器,数据从哪里开始到哪里结束,以及RandomAccessFile的seek方法来来对文件的指定位置经行写入。

点击事件触发下载任务,controller.startDownload(MainActivity.this,mHandler,Constant.downloadUrl,filename,1), 分别传入Context,handler,下载链接,文件名,线程数量:

 btn_pauseDownload.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (!NetWorkUtil.isNetworkAvailable(MainActivity.this)){
                    Toast.makeText(MainActivity.this,"请检查网络",Toast.LENGTH_SHORT).show();
                    return;
                }
                controller.setDownloadState(pausestate);
                controller.stopDownload(MainActivity.this,mHandler,Constant.downloadUrl,filename,1);
            }
        });
        btn_startDownload.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (!NetWorkUtil.isNetworkAvailable(MainActivity.this)){
                    Toast.makeText(MainActivity.this,"请检查网络",Toast.LENGTH_SHORT).show();
                    return;
                }
                controller.setDownloadState(startstate);
                controller.startDownload(MainActivity.this,mHandler,Constant.downloadUrl,filename,1);
            }
        });

About

安卓多线程下载支持断点续传

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages