美文网首页
下载列表实现

下载列表实现

作者: 小小志伟 | 来源:发表于2018-10-16 09:49 被阅读0次

下载状态维护:本地

1.为什么本地保存下载状态。

因为本地文件被删除,服务器是不知道的,所以无法记录。(安卓是可以从文件夹删除)

2.手动退出和后台退出造成异常。

1.手动退出: 假设处于下载中,手动退出应用。此时的下载状态应该更新为未下载(没有断点续传)。

2.后台退出同理: 长时间处于后台被系统杀死。

解决法案:1.通过appDelegate回调监听捕捉事件。
2.在app启动时候,数据初始化。

3.本地实现方案:

本地存储方案:1.数据库。
2.key-value

最佳解决方案:使用数据库:下载url-> 下载状态->本地存储文件路径。

对应表结构:

url status destinationUrl
http:url 0 文件路径

根据url找到对应下载状态,并且取到下载路径内容。


UI的更新:Cell的改变

1.cell重用导致下载状态错乱。

因为重用机制:cell上的下载状态会错乱。
例子:屏幕未出现的cell状态:未下载。屏幕第一条数据是下载中。cell重用,造成屏幕未出现的cell状态错乱为下载中。所以必须从model中时时更新。

2.cell下载状态:第一次初始化和下载点击。

既然用本地数据记录,就要第一次从数据库拿到初始数据。
既然用cell重用,就要保证model中数据更新(内存中)。
造成问题:model数据来自网络,下载状态数据来自本地。

解决方案:下载状态的更新统一来自model的数据,可以为model添加一个字段status。第一次网络获取model时候,从本地拿到状态为model赋值。当点击下载时候,根据下载情况,更新对应model的status。并监听model的status,更新cell的界面变化。


并发数的控制

1.NSOperationQuene

Quene有属性maxConcurrentOperationCount最大并发数控制。
注意:只需保证NSOperationQuene初始化一次。

NSOperationQuene的理解:可以看作一条管道,每个操作看作一段水流。(遵循先入先出原则);并发数的控制类似蓄水池。
1.并发数为1:蓄水池有一个管子(NSOperationQuene)流入水池。只有一个水管(并发数的控制)流出水。此时只开启一个异步线程。
2.并发数为10:蓄水池有一个管子(NSOperationQuene)流入水池。同时10个水管(并发数的控制)流出水。此时开启10个异步线程。

下边是还没来得及实现:

2.GCD


断点续传


下载进度

相关文章

  • 下载列表实现

    下载状态维护:本地 1.为什么本地保存下载状态。 因为本地文件被删除,服务器是不知道的,所以无法记录。(安卓是可以...

  • JavaWeb文件下载列表的实现

    下载文件 创建获取文件列表Servlet,首次访问时request中没有目录参数,需要给个默认目录。遍历该目录下文...

  • eyoucms 指定文章列表如何调用下载内容

    指定文章列表如何调用下载内容呢?下面文章即可实现 {eyou:arclist typeid='1' row='8'...

  • Flutter 学习:动态列表两种实现方式

    一.复习上一节 列表组件 二.动态列表 动态列表实现有两种 1.for循环实现 build实现 三.for循环实现...

  • 2019-02-28第3次 列表

    第3次 列表 知识点 会使用有序列表实现数据展示 会使用无序列表实现数据展示【重点】 会使用定义列表实现数据展示【...

  • NDK配置教程

    在Linux中配置NDK工具 准备工作 首先需要下载ndk安装包,安装列表: 谷歌官方NDK下载列表:NDK下载 ...

  • 2018-11-12 小程序wx:for横向列表布局

    问题 我们知道,wx:for可以实现列表布局,但是默认实现的是纵向列表布局,如歌实现横向列表布局呢? 解决 直接设...

  • 聚美优品美容热点(盒子模型)

    题目 需求说明 (1) . 使用无序列表制作美容品列表 (2) . 列表图标使用背景图像实现 实现效果 实现思路 ...

  • 2018-08-23

    Node.js实现在线文件管理工具 需求文件列表展示文件上传下载 依赖模块fspathexpressbody-pa...

  • 用HTML来写列表

    考虑用html如何实现以下列表: 要实现的是有序列表和无序列表以及嵌套列表的结合 有序列表: 定义和用法: ...

网友评论

      本文标题:下载列表实现

      本文链接:https://www.haomeiwen.com/subject/pkmczftx.html