断点下载

一个来自Afinal断点下载BUG的解决方案

依然范特西╮ 提交于 2019-12-09 14:47:57
作为国内第一个Android开发框架Afinal,相信有很多开发者都知道的。虽然随着Android版本的迭代,其中有一些方法有了更好的解决办法但从来没有人怀疑Afinal的价值。 最近在做一个断点下载的功能,参考了比较多的例子,无意间发现了FinalHttp.download()方法中的一个BUG。 首先跟大家介绍一下afinal中download下载的实现原理。与其他众多下载方法不同,afinal使用的是一个单线程断点下载,且其中没有数据库或额外的文件操作。那么是如何实现断点续传的呢,主要是使用了FileOutputStream的一个构造方法 , 查看api文档看到 参数append可以在一个文件的结尾处续写数据,这样就实现了断点续传功能。 知道了实现原理,我们来看代码(参数名略有改动) 你可以在这里看到完整的代码 public Object handleEntity(HttpEntity entity, EntityCallBack callback, String target, boolean isResume) throws IOException { if (TextUtils.isEmpty(target) || target.trim().length() == 0) return null; File targetFile = new File(target);