自从第一个测试版问世以来,我一直试图找出"真正的"多任务处理是否可行 - 即你是否可以在后台安装一个程序并让它无限期地挂在网络连接上?
我正在考虑使用IM或IRC应用程序.我自己在iOS 4上编译了一个应用程序,并没有改变它似乎在后台运行的东西,但是对于所有我知道它只是暂停到内存.
文档说你可以做的最好是请求长达10分钟,但在开发人员演示中,他们在后台展示了Skype,然后通知用户有来电.有人知道这一切是如何工作的吗?
Yan*_*min 10
似乎答案是否定的.Skype的API是一种非常特殊的情况,称为"voip"模式,需要特殊的行为,例如标记用于VoIP的套接字.
您可以在后台接收警报通知(例如时间过去).操作系统严重限制了您处于后台运行状态的时间.
Android的背景模型是完整的,并且在很多方面都更好.
Apple有一个名为"在您的应用程序中支持多任务"的指南,您应该可以找到它.
Apple的iOS 4开发人员文档非常清楚地概述了这一点.
当您的应用程序关闭或切换时,它几乎立即"暂停",这意味着操作系统会冻结应用程序的状态.当用户切换回您的应用程序时,您的代码会一直保持运行.您无需向应用程序添加任何代码来执行此操作,只需针对OS 4进行编译即可.
在大多数情况下,上述情况属实."暂停"模型可能不适用的原因有两个:
1)如果设备开始内存不足,操作系统将在没有警告的情况下开始终止暂时未切换的暂停应用程序.这就是为什么你的应用程序最好还是要记住它的状态,所以如果你的应用程序被终止,然后重新打开,用户就不会注意到它,因为它仍然会从它们停止的地方返回.
2)您的应用使用其中一个"后台"API.这些用于音频回放,VoIP服务或位置服务.在这种情况下,您的应用程序可以在后台继续运行,但只能访问这些API.此外,您的应用可以将某些长时间运行的任务指定为需要在暂停或终止应用之前完成的"后台任务",例如将图片上传到Flickr或渲染视频等.
"后台任务"方法不会无限期地覆盖ping服务器,因为任务有一个时间限制,之后它将被强制暂停.需要这种功能的应用程序可以像以前一样实现推送通知.
那应该清除这一点.总而言之,我认为这是移动设备上多任务处理的一个非常优雅的解决方案.
归档时间: |
|
查看次数: |
3021 次 |
最近记录: |