chenshiqiang1202 / CsqDownloadManager

一个支持多任务、任务多线程、断点续传的下载管理器,适用于较大文件下载。

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CsqDownloadManager

概述

一个支持多任务、任务多线程、断点续传的下载管理器,适用于较大文件下载。minSdkVersion 9。

特点

1、支持多个下载任务(默认最多3个)同时下载,如果任务支持断点续传,可以配置此任务多线程(1-6个,默认3个)下载,并支持任务暂停/恢复/删除等操作;

2、使用原生sql语句,不依赖其他组件,尽量减少方法数量;

3、数据库操作通过ContentProvider,其他应用也可以通过ContentProvider进行下载管理;

4、支持自定义下载事件分发器,默认通过广播分发,可以implements EventDispatcher实现其他事件分发。


#### 建议与反馈

作者能力有限,下载过程异常情况也特别多,暂时也还在测试验证阶段,所以可能有一些错误,如果大家有什么好的建议或者测试bug,欢迎反馈。

Email : csqwyyx@163.com



## 使用
**权限**:
<permission
    android:name="com.csq.permission.ACCESS_DOWNLOAD_MANAGER"
    android:protectionLevel="normal" />
<uses-permission android:name="com.csq.permission.ACCESS_DOWNLOAD_MANAGER" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />

**AndroidManifest.xml**:
    <activity
        android:name="com.csq.downloadmanager.DownloadListActivity"
        android:label="@string/title_activity_download_list"
        android:launchMode="singleInstance">
        <intent-filter>
            <action android:name="com.csq.downloadmanager.DownloadListActivity"/>
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

    <provider
        android:name="com.csq.downloadmanager.provider.DownloadProvider"
        android:authorities="com.csq.downloadmanager.provider" />

    <service android:name="com.csq.downloadmanager.service.DownloadService" />

**增**:
DownloadInfo info = new DownloadInfo(url);
info.setThreadNum(3);//线程数
info.setIsOnlyWifi(true);//仅在wifi下下载
info.setFolderPath(Environment.getDownloadCacheDirectory().getAbsolutePath());//下载目录
info.setIsShowNotification(true);//是否在通知栏显示下载进度
DownloadInfoDao.getInstace(context).startDownload(info);

**删**:
DownloadInfoDao.getInstace(context).deleteDownload(rowId);

**改**:
DownloadInfoDao.getInstace(context).updateDownload(
UpdateCondition.create()
      .addColumn(Downloads.ColumnStatus, DownloadInfo.StatusDowning)
      .setWhere(new Where().eq(Downloads.ColumnID, downloadInfo.getId()))
      );

**查**:
DownloadInfoDao.getInstace(context).queryDownloadInfos(
    Where.create().in(Downloads.ColumnID, downloadIds), null);

About

一个支持多任务、任务多线程、断点续传的下载管理器,适用于较大文件下载。


Languages

Language:Java 100.0%