[小编评语]80后童年最爱的游戏之一,該版保留了原版的风格,只是添加了虚拟按键,操作起来一样流畅,而且是免费的
欢迎转载也请保留这段申明 ,原文地址:
开发中我们常常会需要有apk升级,或者下载某个文件的问题所以这里就写了个通用的文件下载的功能 ZDloader。通过这篇文章你将看箌
你的时间非常宝贵跟我一起…,呸 来看看 ZDloader 怎么关联吧!
ZDloader 的下載配置非常简单:
//如果不是正在下载,则让它继续下载即可
ZDloader 为唯一暴露的接口它提供以下方法:
其中 listener 那提供比较容易扩展的接口:
//下载荿功,返回下载文件由开发者自己定义功能
//错误提示,返回错误类型和错误信息
//下载信息ZDownlaodBean,会返回下载速度下载的文件长度,和总嘚文件长度
在使用一些比较好用的框架比如 glide ,它的接口设计是非常好用的比如:
所以,ZDloader 在设计的时候也采用这種构建者模式,原理也不难就是在常用的类中,先构建一个接口:
//添加一个隐形的 fragment 用来管理生命周期这个就有点老生常谈了,无非就昰把拿到的连接识别的长度,再把它分成不同等份最后一个是除不尽的,所以要加 1比如11M分5个线程下载,原理如下图:
//每一个线程要丅载的大小
笔者遇到一个问题就是界面退出之后,重新进来因为重新初始化了,相当于重新起了一个任务那么下次的内容跟这次肯定是不一样的。
而这个问题的关键就在于我们需要对任务初始化一次,这样想的话我们只需要把下载任务的初始化放在 service 的onCreate ,保证了实例之后一个那么下次进来,我们就可以用 isDownload 来判断是否正在下载了这样也解决了从后台进来,有两次任务导致UI错乱问题;
当然这只是一个思路,欢迎各位提出建议