首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Iphone能够在多任务环境中自动暂停和恢复下载文件

Iphone能够在多任务环境中自动暂停和恢复下载文件
EN

Stack Overflow用户
提问于 2011-05-28 14:58:40
回答 2查看 543关注 0票数 1

最近,我用Iphone开发了一个简单的文件下载应用程序。我在iPhone3GS上测试了一下,发现了一些有趣的东西。

当应用程序开始下载文件时,我将其关闭。我在一段时间(比如说6秒)后打开了应用程序,下载实际上是从它离开的地方开始的。

软件如何能够暂停和恢复http下载。(我的tomcat服务器没有任何流媒体或恢复能力)

我的设置是Tomcat,它有一个Servlet,它基本上是从文件系统读取并发送出去。和简单的iPhone3GS文件下载应用程序,我没有启用任何UIBackgroundModes。为表示状态而添加的进度条

EN

回答 2

Stack Overflow用户

发布于 2011-05-28 15:19:48

你看到的是一个连接超时的问题,在你的应用程序不活跃的时候不会触发。更详细地说:

  1. 当您打开一个连接并开始通过它传输数据时,操作系统会与该连接关联一个超时(例如,90秒、60秒、300秒,这取决于您通常可以调整的一些设置,但并不总是很容易);
  2. 此超时用于监控连接状态;如果在超过超时的时间内没有传输数据,则认为该连接已断开,或假定该连接已被另一方关闭;
  3. 这是必要的,因为远程连接的质量是高度可变的,如果你检查你的传输,你会注意到它们可以“很容易”停止几秒钟,甚至更多;
  4. 如果数据传输停止一段时间,但在连接超时之前恢复,则网络协议(所有协议,客户端和服务器端)在设计上能够恢复数据传输,因为没有中断(网络协议具有处理该中断的特定功能,如将数据分块为较小的数据包并对每个数据包进行编号,以确保所有数据包都被传输,并且如果communication);

中出现任何错误,则可以根据发送顺序重新排列它们

因此,这应该解释了你的应用程序在6秒停止后没有出现故障地恢复连接的事实。

如果您让您的应用程序关闭更长的时间,您将看到连接将中断。

票数 2
EN

Stack Overflow用户

发布于 2011-05-28 15:18:41

将大型数据分成小部分是HTTP标准的一个基本特性。详情请参见HTTP1.1 - Section 14.16 - Content-Range。默认情况下,Cocoa实现很可能会处理所有这些问题。大量下载将在传输过程中缓存,并在请求时自动恢复。

服务器和iPhone实际上不需要任何额外的软件来支持此功能。在HTTP通信的上下文中,每次下载都只是从服务器发出的一些数据包,而这些数据包中的任何一个都可能需要很长时间才能真正到达接收设备。恢复下载实际上是相同的下载,两个包之间有一个异常长的延迟。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6160170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档