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

来源:互联网 发布:淘宝 苹果证书 编辑:程序博客网 时间:2024/05/21 09:50

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

有了这个逻辑之后再去实现就好写多了,接下来就是具体的实现了,具体的代码我就不贴了,毕竟这是公司的商业项目,其中实现断点续传的部分参考自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行代码前进!

0 0