iOS开发下载文件速度计算
当我们写下载界面的时候,需要向用户展示每秒下载多少KB,这个时候就需要计算速度。如下:
我用的是AFNetworking来做下载的,我们拿AFHTTPRequestOperation来举列,AFHTTPRequestOperation中有个方法:
- (void)setDownloadProgressBlock:(void (^)(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead))block
这个方法读取导数据之后通过block回调。计算速度就是在这个block里面完成的。
需要定义一个下载对象:DownTask。DownTask需要有的属性:totalRead(一秒读取的数据)、speed(速度)、date(记录上一秒计算之后的时间)。注意:这里的一秒不是严格意义上的一秒,有可能大于一秒,我们计算的是平均速度,所以不会误差太大。
//计算一秒中的速度
downTask.totalRead += bytesRead;//获取当前时间
NSDate *currentDate = [NSDate date];//当前时间和上一秒时间做对比,大于等于一秒就去计算
if ([currentDate timeIntervalSinceDate:downTask.date] >= 1) {
//时间差
double time = [currentDate timeIntervalSinceDate:downTask.date];//计算速度
long long speed = downTask.total/time;//把速度转成KB或M
downTask.speed = [downTask formatByteCount:speed];//维护变量,将计算过的清零
downTask.totalRead = 0.0;//维护变量,记录这次计算的时间
downTask.date = currentDate;
}
其中, downTask.speed = [downTask formatByteCount:speed];是用来将字节转化成我们需要的KB或M。用到的是:NSByteCountFormatter,具体实现如下:
- (NSString*)formatByteCount:(long long)size
{
return [NSByteCountFormatter stringFromByteCount:size countStyle:NSByteCountFormatterCountStyleFile];
}
这个方法是放在下载对象DownTask里面的。
iOS开发下载文件速度计算相关推荐
- h5 ios Safair下载文件自动添加.html导致文件乱码问题,ios不能使用接口播放视频的问题
需求:h5 页面 下载pdf,doc,docx,xlsx,xls 文件的功能 在安卓手机和 ios上的uc浏览器是可以正常的 下载或者预览的 但是在ios的Safair 下载时会被自动添加html尾缀 ...
- 外国官方网站下载文件速度缓慢
我们经常要下载东西,特别是一下专业软件就不得不到官方网站下载了,但很多这样的软件常常需要到外国的一些官方网站里下载了.可是,也经常遇到下载速度过于缓慢的的问题,在这我是用了一个简单但是略显笨的方法,但 ...
- macOS/iOS WKWebview 下载文件
WKWebview 下载文件需要通过JS注入的方式来下载.js下载的数据是base64编码的,回到给原生后,原生需要反编码后才是原始文件的数据. 具体步骤: 配置WKWebview的js回调句柄(标识 ...
- minio下载文件速度很慢的原因分析与说明
文章目录 1.实战背景 2.问题描述 3.问题分析 4.问题解决 1.实战背景 最近在做一个项目,需要用到minio来搭建文件系统,先简单说一下我在项目中设置的上传文件流程: 前端将分块文件逐一传给后 ...
- ios开发描述文件添加新设备
我们经常用到真机测试,再development证书中添加新的设备. 首先在devices中 添加上自己的设备,然后需要获取uuid号.起个名字,填上你设备的uuid号 然后到描述文件里,重新生成一下描 ...
- php ios 不能下载文件,iOS大厅不能下载公告
各位飞智iOS用户们: 最新进展时间:20170119 16:45 本次维护结束 1.影之刃2.疯狂贪吃蛇.弓箭手大作战.崩坏学园2.镇魔曲.怪兽大作战.啪啪游戏厅仅支持64位机型(iphoneSE/ ...
- iOS开发-plist文件增删改查
plist第一次看到这个后缀名文件的时候感觉怪怪的,不过接触久了也就习以为常了,plist是Property List的简称可以理解成属性列表文件,主要用来存储串行化后的对象的文件.扩展名为.plis ...
- iOS开发中文件管理者NSFileManager的使用,收藏使用!
NSFileManger文件管理者的使用 //创建文件管理者NSFileManager *fileManger = [NSFileManager defaultManager];//判断指定文件或文件 ...
- iOS开发 下载历史版本Xcode 下载历史版本OSX系统等
https://developer.apple.com/download/more/ 图1
- iOS开发常用三方库、插件、知名博客
TimLiu-iOS iOS开发常用三方库.插件.知名博客等等,期待大家和我们一起共同维护,同时也期望大家随时能提出宝贵的意见(直接提交Issues即可). 持续更新... 版本:Objective- ...
最新文章
- Ubuntu14搭建配置青岛大学OJ系统
- Django_博客_XSS 攻击防范
- MySQL数据导入oracle
- boost::mpl模块实现is_placeholder相关的测试程序
- hibernate 映射四多对一双向映射
- java多线程编程_《java多线程编程实战指南》读书笔记 -- 基本概念
- (王道408考研操作系统)第五章输入/输出(I/O)管理-第一节3:I/O控制方式
- thinkphp中mysql添加数据_thinkphp添加数据 add()方法
- 构建嵌入式版本的 ACE TAO 6.5.3
- android 编程 输入矩阵,Android中Matrix的pre post set方法理解
- 基于jdk proxy的动态代理模式
- Linux ifconfig命令示例
- eclipse svn 忽略 target/.project /.classpath /.settings等 目录
- 第10题 正则表达式匹配(动态规划)
- 兼容android模拟器的微信apk,Android模拟器中安装apk的方法
- Android页面的跳转
- Java后台获取USB二维码扫描枪内容(Java监听系统键盘操作)
- JAVA_抽象类和接口
- 计算机联锁想系统包括哪几层,计算机联锁系统技术_习题.ppt
- C# winform 学习(一)