Android开发——下载功能的逻辑和实现

项目里需要用到下载,一开始没觉得有什么难的,后来真正写的时候才发现这里的逻辑还是有一点绕的,在小伙伴的提醒下我才真正把逻辑理清楚!写代码前的逻辑要清楚,这样写的时候才知道要点,如果不知道从何下手,那么最快最简便的方法就是直接模仿同类产品,那句话怎么说来着,好的艺术家抄袭,伟大的艺术家剽窃!(哈哈,其实这句话的本意是让你从优秀的产品里找到设计的艺术)
下载图片的逻辑,字丑见谅

有了这个逻辑之后再去实现就好写多了,接下来就是具体的实现了,具体的代码我就不贴了,毕竟这是公司的商业项目,其中实现断点续传的部分参考自http://stackoverflow.com/questions/6237079/resume-http-file-download-in-java

//这句话就表示下载是具体从哪一个比特开始
connection.setRequestProperty("Range", "bytes=" + downloaded + "-");
//当pause为true时直接结束下载,换句话说根本不存在真正的暂停,点了暂停之后就结束下载
//并记录具体下载了多少bytes,当再次下载时读取已下载的bytes放在connection中,实现了断点续传
while ((bufRead = is.read(bytes)) != -1 && !pause) {
     curlength += bufRead;
     fos.write(bytes, 0, bufRead);
     //避免更新太快造成的卡顿,这里每5%更新一次,原先我是新开一个线程专门来发数据给UI更新,结果各种问题,后来小伙伴refactor时改成这个if语句
     //确实,简单有效的方法最好了!
     if (curlength * 100 / totalLength - percentProgress > 5) {
           percentProgress = curlength * 100 / totalLength;
           sendDownloadProgress(videoDownload);
      }
 }

最后写句话给自己:功能实现之后记得review并refactor自己的code,这不仅是在整理自己的思路也是在培养自己良好的编程习惯!向1W行代码前进!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值