宾果消消消792关怎么过乐第3064关怎么过

[小编评语]80后童年最爱的游戏之一,該版保留了原版的风格,只是添加了虚拟按键,操作起来一样流畅,而且是免费的

欢迎转载也请保留这段申明 ,原文地址:

开发中我们常常会需要有apk升级,或者下载某个文件的问题所以这里就写了个通用的文件下载的功能 ZDloader。通过这篇文章你将看箌

  • 常用框架 API 接口设计
  • 后台下载界面退出之后,进来继续显示下载UI的原理

你的时间非常宝贵跟我一起…,呸 来看看 ZDloader 怎么关联吧!

ZDloader 的下載配置非常简单:

//如果不是正在下载,则让它继续下载即可

ZDloader 为唯一暴露的接口它提供以下方法:

其中 listener 那提供比较容易扩展的接口:

//下载荿功,返回下载文件由开发者自己定义功能
//错误提示,返回错误类型和错误信息
//下载信息ZDownlaodBean,会返回下载速度下载的文件长度,和总嘚文件长度

3.1、常用框架 API接口设计

在使用一些比较好用的框架比如 glide ,它的接口设计是非常好用的比如:

所以,ZDloader 在设计的时候也采用这種构建者模式,原理也不难就是在常用的类中,先构建一个接口:

//添加一个隐形的 fragment 用来管理生命周期

这个就有点老生常谈了,无非就昰把拿到的连接识别的长度,再把它分成不同等份最后一个是除不尽的,所以要加 1比如11M分5个线程下载,原理如下图:

//每一个线程要丅载的大小

3.3、退出之后进来继续下载

笔者遇到一个问题就是界面退出之后,重新进来因为重新初始化了,相当于重新起了一个任务那么下次的内容跟这次肯定是不一样的。
而这个问题的关键就在于我们需要对任务初始化一次,这样想的话我们只需要把下载任务的初始化放在 service 的onCreate ,保证了实例之后一个那么下次进来,我们就可以用 isDownload 来判断是否正在下载了这样也解决了从后台进来,有两次任务导致UI错乱问题;
当然这只是一个思路,欢迎各位提出建议

参考资料

 

随机推荐