iOS 4是否为第三方开发人员提供"真正的多任务处理"?

Phi*_*lak 10 iphone ios4 ios

自从第一个测试版问世以来,我一直试图找出"真正的"多任务处理是否可行 - 即你是否可以在后台安装一个程序并让它无限期地挂在网络连接上?

我正在考虑使用IM或IRC应用程序.我自己在iOS 4上编译了一个应用程序,并没有改变它似乎在后台运行的东西,但是对于所有我知道它只是暂停到内存.

文档说你可以做的最好是请求长达10分钟,但在开发人员演示中,他们在后台展示了Skype,然后通知用户有来电.有人知道这一切是如何工作的吗?

Yan*_*min 10

似乎答案是否定的.Skype的API是一种非常特殊的情况,称为"voip"模式,需要特殊的行为,例如标记用于VoIP的套接字.

您可以在后台接收警报通知(例如时间过去).操作系统严重限制了您处于后台运行状态的时间.

Android的背景模型是完整的,并且在很多方面都更好.

Apple有一个名为"在您的应用程序中支持多任务"的指南,您应该可以找到它.

  • 完全可操作的后台模式对于开发人员来说更容易处理,但电池寿命却很残酷.这就是Apple在这里做出的设计权衡.不要成为Apple的辩护者,但如果您像用户而不是开发人员一样思考,您就可以理解设计选择. (9认同)
  • @pkulak反过来说你想要的电池寿命只有几个小时才能满足您的需求.真正的非开发人员最终用户,想要一个持续一整天并且做他们需要的手机,他们并不关心它是如何做到的.如果它看起来像你想做的那样但却没有按你认为的那样去做,那有什么区别. (3认同)
  • 我希望它作为用户.我想要适当的IRC和聊天应用程序,我希望开发人员可以自由地做他们需要做的事情来创建我想要的应用程序.也许我是一个令人讨厌的用户,并不典型,但我仍然像用户一样思考. (2认同)
  • @theatrus我从来没有说过任何关于Android的内容以及它做了什么和没有做什么,但是自从你提起它以来,N1(以及大多数其他Android手机)的电池续航时间非常糟糕.我的一个开发者朋友正在放弃他的N1,因为它只持续了大约半天,他的3G持续一天半到两天做同样的事情. (2认同)
  • 你可以创建一个长时间运行的后台任务... https://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html (2认同)

Ale*_*ord 8

Apple的iOS 4开发人员文档非常清楚地概述了这一点.

当您的应用程序关闭或切换时,它几乎立即"暂停",这意味着操作系统会冻结应用程序的状态.当用户切换回您的应用程序时,您的代码会一直保持运行.您无需向应用程序添加任何代码来执行此操作,只需针对OS 4进行编译即可.

在大多数情况下,上述情况属实."暂停"模型可能不适用的原因有两个:

1)如果设备开始内存不足,操作系统将在没有警告的情况下开始终止暂时未切换的暂停应用程序.这就是为什么你的应用程序最好还是要记住它的状态,所以如果你的应用程序被终止,然后重新打开,用户就不会注意到它,因为它仍然会从它们停止的地方返回.

2)您的应用使用其中一个"后台"API.这些用于音频回放,VoIP服务或位置服务.在这种情况下,您的应用程序可以在后台继续运行,但只能访问这些API.此外,您的应用可以将某些长时间运行的任务指定为需要在暂停或终止应用之前完成的"后台任务",例如将图片上传到Flickr或渲染视频等.

"后台任务"方法不会无限期地覆盖ping服务器,因为任务有一个时间限制,之后它将被强制暂停.需要这种功能的应用程序可以像以前一样实现推送通知.

那应该清除这一点.总而言之,我认为这是移动设备上多任务处理的一个非常优雅的解决方案.