列表断点续传

本文介绍了一个列表断点续传下载的实现过程,包括创建下载对象、使用sqlite保存下载信息、设计下载线程、配置请求头和RandomAccessFile进行文件续写,以及下载页面的编写。提供了一个可以暂停、续传的多文件下载功能。
摘要由CSDN通过智能技术生成

一、简介:

断点续传,这一概念经常听说,在项目中一直没有接触到,刚刚有点时间,自己做了一个列表下载的demo,先看图,如下:


如上图功能所示,可以同时下载多个文件(我为了展示方便,限制了同时只允许两路线程下载),并可以随时暂停,下次进入程序时也可以按上次暂停位置继续下载;话不多说,我现在将展示我的实现过程;

二、实现过程:

(1)首先创建下载对象:

public class DownloadFileInfo {
    private int id ;
    private String fileName ; // 文件名
    private String filePath ; // 文件下载路径
    private long totalSize ; // 文件总大小
    private long currSize ; // 当前已下载大小
    private boolean isFinish ; // 是否已经下载完成
    private boolean isDownload ; // 是否正在下载
             //get/set方法、toSting方法
             //根据需要还可重写equals方法,为了比较方便,我这里重写了此方法
    @Override
    public boolean equals(Object obj) {
        if (obj instanceof DownloadFileInfo) {
            if (((DownloadFileInfo) obj).getFilePath().trim().equals( filePath .trim())) {
            return true ;
            }
          }
        return false ;

}}

(2)建立sqlite数据库,并完善其操作方法,作用是保存每个下载文件的信息,如文件总大小,当前下载位置等,此为断点续传的基础,

db.execSQL("create table if not exists t_flie_down(_id integer primary key autoincrement" +
        ",down_path varchar(500) not null" +
        ",total_size long not null" +
        ",curr_size long not null" +
        ",file_name varchar(255) not null" +
        ",is_finish integer)");
public class DBOperation {
    private static DBOperation operation;
    private DBOpenHelper helper;
  private static final String DB_TABLE = "t_flie_down";//表名
  private static final String ID = "_id";//id
  private static final String DOWN_PATH = "down_path";//下载路径
  private static final String TOTAL_SIZE = "total_size";//文件总大小
  private static final String CURR_SIZE = "curr_size";//当前下载数
  private static final String FILE_NAME = "file_name";//文件名
  private static final String IS_FINISH = "is_finish";//0完成1未完成

       private Lock lock = new ReentrantLock(); 

//获取静态实例
    public static DBOperation getInstance(Context context) {
        if (operation == null) {
            synchronized (DBOperation.class) {
                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值