-
Notifications
You must be signed in to change notification settings - Fork 2.2k
冉天华 edited this page Feb 7, 2018
·
16 revisions
- Get Tasks List? "unbind" Activity? Manage Tasks?: Please ref here
-
Set frequence of the
FileDownloadListener#progress
callback: Please ref here、中文-1、中文-2、中文-3 - Start downloading automatically when network reconnected from disconnected state: Please ref here
- How to import FileDownloader to the eclipse?: Please ref here
- Dynamic Url for the same task? : please follow this issue: #224
- getSoFar and getTotal not work correctly?: Please ref here
- Long delay before download starts?: Please ref here
在启动下载的时候,如果下载服务没有启动。默认会进入等待队列,然后自动启动服务,服务启动后,会自动开始任务。
- 获取服务连接状态可以是:
FileDownloader#isServiceConnected
- 进行一些与服务连接有关的调用,可以通过以下方法辅助:
FileDownloader#insureServiceBind
、FileDownloader#insureServiceBindAsync
、FileDownloader#bindService(Runnable)
.
参考这里
支持的,具体可以参看这里
出现这个错误,表示 TCP 收到了一个 RST packet,那么当前 socket 连接已经不可用了,关于 RST packet,可以参考这里。
收到服务器的 RST packet 的原因常见的有下面几种:
- 客户端连接服务器指定端口,但是服务器该端口未打开,服务器会发送 RST packet。
- 服务端通过 SO_RCVTIMEO 设置 TCP 接收数据包的超时时间,当超时发生时,服务器会发送一个 RST packet。
- 服务端提前关闭了连接(一个很常见的 case 是服务器并发连接数超过了其承载量,服务器关掉了当前连接),客户端在这个连接上读取数据时,服务器会发送 RST packet。
- RST 攻击,即攻击者伪造 RST packet,详情可参考这里
在使用 FileDownloader
的场景中,其实绝大多数是因为上述第二点或者三点造成的问题,此时问题在于服务端,需要服务端去解决,当然客户端可以通过 FileDownloader
增加重试次数,从而增加成功下载的机会,但这只是治标不治本。对于第一点,基本上不会遇到,而且从现有反馈这个 issue 的情况来看,是在下载过程中出现了异常,即连接已经正常建立过了。不过还是需要提下一个特殊的 case ,即在 DNS 被污染的情况下,有可能请求被发送到了未开启的服务端口,那么也有可能出现这个问题,此时连接都无法建立。
综上所述,出现这种错误是 TCP 层发生异常,FileDownloader
本身只是一个下载工具,不可能对 TCP 层有任何的影响,所以 FileDownloader
不是造成这个异常的原因,也不能解决这个问题,唯一能做的是增加重试次数增加下载成功的机会。绝大部分情况下,问题发生在服务端,需要服务端从根本上解决问题。
- Initialization
- Start downloading
- Pause or Stop
- Get the internal stored data
- Customizable Component
- Interface