• Stars
    star
    421
  • Rank 102,977 (Top 3 %)
  • Language
    Java
  • License
    Apache License 2.0
  • Created almost 8 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

基于Okhttp, 结合Retrofit,使用Okio ,简化处理I/O操作,加入多种设计模式,实现基于链式的android平台多线程下载利器!

FastDownloader

基于Okhttp3, 结合Builder,Okio ,加入多种设计模式,实现的android平台多线程下载利器!

功能

  • 多线程多任务下载功能
  • 基本的断点续传
  • 下载数据持久,程序退出仍可以保留
  • 支持视频,小说,文件,应用,文本多模式下载
  • 支持通知栏下载进度同步更新
  • 支持静默和非静默下载
  • 支持多种参数定制,文件名,存储路径定制功能
  • 智能进行优先级下载,wifi自动恢复失败任务
  • 提供进度回调,可实现自定义的操作

效果

效果

实践

依赖

gradle依赖远程maven包:

compile 'com.tamic.fastdownloader:Android-FastDownloader:1.0.3'

初始化

Application中初始化下载

@Override
public void onCreate() {
   super.onCreate();
   DownloadInit.initDownload(getApplicationContext());

}

调用

simple 1

new Download.Builder()
          .url(url)
          .build(this)
          .start();

只要设置下载Url即可,文件名下载库会自动抓取, 默认优先级为中等,回调UI下载自动处理,默认的保存路径为:你的apk包名+ /tamic/downloads/ 下

simple 2:

new Download.Builder()
      .url("this is url")//下载url
      .priority(Priority.HIGH) 
      .savepath("保存路径")
      .isImplicit(false)//是否显示UI
      .channel(3000)//渠道可选
      .client(DLClientFactory.createClient(Type.NORMAL, this))//下载器
      .setCallback(new DLCallback())//下载回调
      .build(this)
      .start();

这种配置 可定制下载的文件名,存储路径,优先级,以及渠道,是否显示通知栏更新UI等,并且回调可以自我实现,譬如下载完成后显示安装对话框等

高级API

重新开始下载

通过reStart() 对已有的下载任务开始强制重新下载,将会删除已下载的缓存文件。

      new Download.Builder()
                  .url(url)
                  .build(this)
                  .reStart();
                

创建新的下载

newStart() 创建新的下载 不删除以前文件。

      new Download.Builder()
                  .url(url)
                  .build(this)
                  .newStart();
                

下载Task模式

DownMode  通过.mode(DownMode.SINGLE)设置下载任务模式,默认为DownMode.SINGLE:只存在一个此Url的下载记录, 再次下载不会创建新任务。

 new Download.Builder().mode(DownMode.SINGLE).url(url)
              .build(this).start();

SINGLE: 任务栈只存在一个此Url的下载记录。 再次下载不会创建新任务

TOP: 任务栈如果存在此Tag的下载记录。 再次下载不会新任务。但是会重新下载,不会删除以前的文件    

NEW_TASK: 任务栈如果存在此Url的下载记录。 再次下载会新任务。 会重新下载,并且会删除以前的文件

               

下载Tag

可以通过tag(String) 设置下载ID

       new Download.Builder()
                  .tag("key")
                  .url(url)
                  .build(this)
                  .Start();
                

如果不设置Tag, 默认为Url+当前系统时间, 有了这个Tag你可以做暂停需取消等操作

String tag = new Download.Builder()
            .url(url)
            .client(DLClientFactory.createClient(NORMAL, this))
            .build(this)
            .start();

         

自定义回调  

对某个下载进行操作可以单独加回调处理,使用setCallback如果忽略不设置,系统则默认不处理。

  new Download.Builder()
     .setCallback(new IDLCallback() {
                @Override
                public void onStart(String key, long fileLength, long downloaded, String savePath, String filenNme) {
                    
                }

                @Override
                public void onSuccess(String key, long fileLength, long downloaded, String savePath, String filenNme, long aSpeed, String aAppiconName) {

                }

                @Override
                public void onAppSuccess(String key, long fileLength, long downloaded, String savePath, String filenNme, long aSpeed, String aAppiconName, int downloadType, int appType) {

                }

                @Override
                public void onFail(String key, long downloaded, String savePath, String filenNme, String aErrinfo) {

                }

                @Override
                public void onCancel(String key, long fileLength, long downloaded, String savePath, String filenNme) {

                }

                @Override
                public void onPause(String key, long fileLength, long downloaded, String savePath, String filenNme) {

                }

                @Override
                public void onDownloading(String key, long fileLength, long downloadLength, long speed, String fileName, int downloadType) {

                }

                @Override
                public void onRefresh(List<DownLoadInfo> infos) {

                }
            })

#License

Copyright 2013 Square, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.                 

More Repositories

1

Novate

A safety client by Https for android, (Android网络框架,基于Retrofit和RxJava打造的链式网络库, 支持okhttp的调用风格,又兼容Retrofit API,并支持rxJava链式操作)
Java
1,431
star
2

SkyMonitoring

Android Static FrameWork(天眼SkyMonitoring), 埋点统计SDK: 支持Activity路由途径统计,自定义事件统计,Crash日志统计。
Java
556
star
3

RetrofitClient

基于Retrofit2.x和Rxjava2.x封装的请求工具类(内含Retrofit2.x & rxjava1.x)
Java
543
star
4

JsWebView

基于JsBridge封装的高效自带加载进度条的WebView
Java
174
star
5

TamicAppMonitoring

Android App 无痕迹全埋点
Java
135
star
6

FocusView

支持Android TV和电视盒子遥控器移动翻页,左右移动的FocusVIew
Java
121
star
7

TvFrameWork

TV_Framework 支持最新TV的框架,支持最新MD设计
Java
81
star
8

JsBridge-Android

Java 和 js互通框架
Java
75
star
9

TvResource-Android

Android Tv项目资源收集
66
star
10

IOS_DragGridView

仿iphone桌面,支持实时交换,长按抖动效果,删除条目,并拖动建立文件夹。
Java
53
star
11

MouseView_TV

Support remote control mouse or TV remote control into the mouse(支持遥控器操作的的鼠标和遥控器做鼠标来用),
Java
32
star
12

Autoinstall

免root自动安装APK,
Java
25
star
13

ChatMomentDemo

微信朋友圈动态,动态显示Gridviewd的条目大小,滑动查看大图,并双指缩放图片。
Java
25
star
14

PluginLoader

基于PluginFramwork的插件加载器,支持APK动态加载
Java
22
star
15

Loader

Loader实例使用, 轻松异步读取大文件
Java
15
star
16

Tamic_Retrofit

user-defined Retrofit. 剖解Retrofit源码,实现简单自定义的Retrofit的框架
Java
15
star
17

ApiMvp

Java
13
star
18

LineGridView

带分割线的GridView
Java
11
star
19

ListWidget

ListWidget sample
Java
9
star
20

FilterBar

Android 自定义多用途筛选框
Java
8
star
21

MvpCase

Java
5
star
22

JavaDaily

每日一题,打好基础,冲高薪
5
star
23

Tamicer.github.io

HTML
3
star
24

autoApk

gradle多渠道 多模块,多版本,多功能打包方案
Java
2
star
25

GlideHelper

Glide wrapper
Java
2
star
26

Javajiagoushi

进阶java大佬的路上 不迷茫
1
star
27

BaiduMap

Java
1
star
28

AIDaily

机器学习,每日一题
1
star
29

WebDaily

前端试题,每日一道
1
star