GithubHelp home page GithubHelp logo

transer's Introduction

Transer

是一个大文件传输的任务管理框架,该框架的设计是无关传输协议的。

架构

功能

状态 功能
支持 HTTP/HTTPS 断点续传下载
支持 HTTP/HTTPS 大文件分片上传
支持 类EventBus的task状态变更通知,支持三种线程的订阅模式
支持 任务分组,分用户
支持 传输速度限制(当前版本只支持下载限速)
支持 自定义的Http传输,数据库保存
支持 自动任务错误重试
支持 任务重命名(下载任务)
支持 小文件优先上传(dev 分支)
支持 multi/form-part上传 (dev 分支)
待支持 其他协议的传输

集成方式

  1. 在project build.gradle 中加入

     allprojects {
         repositories {
             maven { url 'https://jitpack.io' }
         }
     }
    
  2. 在app 的 build.gradle 中加入

      compile 'com.github.shilec:Transer:1.2-d'
    
  3. 在app 的AndroidManifest.xml中 申明 TranserService

     <service android:name="com.scott.transer.TranserService"/>
    
  4. 在 app 的 application 的 onCreate 中初始化TranserService

     TranserConfig config = new TranserConfig.Builder()
             .setDownloadConcurrentThreadSize(3)
             .setUploadConcurrentThreadSize(3)
             .build();
    
     TranserService.init(this,config);
    

dev 分支为最新代码,新功能只是做了简单测试,后续多次测试验证后会同步到master,提供最新release版本。

如果需要最新功能,请直接依赖dev代码作为moudle,方便修改。

帮助文档

文档

开源库使用:

ButterKnife
AndPermission
Retrofit
RxAndroid
RxJava
BaseRecyclerViewAdapterHelper
GreenDao
OkHttp

服务端测试Demo详见:

transer's People

Contributors

shilec avatar

Watchers

 avatar

transer's Issues

奔溃问题

![Uploading %4OOIM0(DMMG$BP74IAM`8.png…

java.lang.NullPointerException: Entity may not be null
at org.greenrobot.greendao.AbstractDao.getKeyVerified(AbstractDao.java:926)
at org.greenrobot.greendao.AbstractDao.delete(AbstractDao.java:625)
at com.scott.transer.manager.TaskDbProcessor.deleteTask(TaskDbProcessor.java:50)
at com.scott.transer.manager.TaskProcessorProxy.deleteTask(TaskProcessorProxy.java:52)
at com.scott.transer.manager.interceptor.DispatchCmdInterceptor.dispatch(DispatchCmdInterceptor.java:38)
at com.scott.transer.manager.interceptor.DispatchCmdInterceptor.intercept(DispatchCmdInterceptor.java:26)
at com.scott.transer.manager.interceptor.ChainImpl.process(ChainImpl.java:30)
at com.scott.transer.manager.interceptor.ReNameDownloadFileInterceptor.intercept(ReNameDownloadFileInterceptor.java:37)
at com.scott.transer.manager.interceptor.ChainImpl.process(ChainImpl.java:30)
at com.scott.transer.manager.interceptor.CheckParamInterceptor.intercept(CheckParamInterceptor.java:24)
at com.scott.transer.manager.interceptor.ChainImpl.process(ChainImpl.java:30)
at com.scott.transer.manager.TaskManager.interceptCmd(TaskManager.java:65)
at com.scott.transer.manager.TaskManager.access$000(TaskManager.java:39)
at com.scott.transer.manager.TaskManager$1.run(TaskManager.java:92)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)

集成这个项目后 greenDao 经常奔溃 导致app闪退 请问这个问题如何解决

使用任务管理下载时taskID崩溃问题

您好,我通过使用任务管理器方式下载文件时,将taskID设置为文件的md5,但是下载一直报错

android.database.sqlite.SQLiteConstraintException: UNIQUE constraint failed: TASK.TASK_ID (code 1555)
at android.database.sqlite.SQLiteConnection.nativeExecuteForLastInsertedRowId(Native Method)
at android.database.sqlite.SQLiteConnection.executeForLastInsertedRowId(SQLiteConnection.java:799)
at android.database.sqlite.SQLiteSession.executeForLastInsertedRowId(SQLiteSession.java:788)
at android.database.sqlite.SQLiteStatement.executeInsert(SQLiteStatement.java:86)
at org.greenrobot.greendao.AbstractDao.insertInsideTx(AbstractDao.java:368)
at org.greenrobot.greendao.AbstractDao.executeInsert(AbstractDao.java:351)
at org.greenrobot.greendao.AbstractDao.insert(AbstractDao.java:319)
at com.scott.transer.manager.TaskDbProcessor.addTask(TaskDbProcessor.java:36)
at com.scott.transer.manager.TaskProcessorProxy.addTask(TaskProcessorProxy.java:36)
at com.scott.transer.manager.interceptor.DispatchCmdInterceptor.dispatch(DispatchCmdInterceptor.java:35)
at com.scott.transer.manager.interceptor.DispatchCmdInterceptor.intercept(DispatchCmdInterceptor.java:26)
at com.scott.transer.manager.interceptor.ChainImpl.process(ChainImpl.java:30)
at com.scott.transer.manager.interceptor.ReNameDownloadFileInterceptor.intercept(ReNameDownloadFileInterceptor.java:41)
at com.scott.transer.manager.interceptor.ChainImpl.process(ChainImpl.java:30)
at com.scott.transer.manager.interceptor.CheckParamInterceptor.intercept(CheckParamInterceptor.java:24)
at com.scott.transer.manager.interceptor.ChainImpl.process(ChainImpl.java:30)
at com.scott.transer.manager.TaskManager.interceptCmd(TaskManager.java:65)
at com.scott.transer.manager.TaskManager.access$000(TaskManager.java:39)
at com.scott.transer.manager.TaskManager$1.run(TaskManager.java:92)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)

请问这是什么原因

如何知道某个task已存在

RT 在一个界面开始了一个下载任务 退出这个界面再进去如何知道存在这个task 从而不需要新建这个task

上传时最后一片总失败

Session-ID: d883d660-8acf-4c25-b3f3-9d8f4019edfc
X-Content-Range: bytes 37748736-38797311/38945179
Content-Disposition: attachment;name="file";filename="test.apk"
Connection: Keep-Alive

这是最后一片上传的header

关于分片上传的进度问题?

大神,你好,我想问下在你的SimpleUploadActivity里面SimpleTaskHandlerListenner中有三个方法,onPiceSuccessful.onFinished,onSpeedChanged中,哪个是最后一个,就是当我上传成功后会具体执行到哪个方法里面,我debug出来,有的时候回到onSpeedChanged,有的时候回到onPiceSuccessful,但是不会到onFinished方法里面去

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.