我试图在后台运行一些服务,所以我在后台通过在后台委托中使用while(1)
循环来触发控件一段时间。
在模拟器上它工作正常,但在将其传输到我的iPad时,应用程序在进入后台后崩溃。
while(1)
循环在设备上不起作用吗?
答案 0 :(得分:0)
在模拟器上它运行正常但是在将其转移到Ipad设备时,应用程序在进入后台后崩溃了。
如果我正确地解释了你正在写作,那么我认为你的应用程序在iOS设备上被杀死的原因仅仅是因为你不允许在应用程序运行应用程序时在你的应用程序中运行一个线程。 “在后台”(即,在用户通过单击主页按钮“退出”之后)。
所以,如果我正确阅读所发生的事情,那么你的应用程序就属于特定类别 应用程序(请参阅后面的内容),或者您可以做的唯一事情就是“注册”后台线程,以便在应用程序进入后台后运行一段有限的时间。
摘自Background Execution and Multitasking
大多数应用在进入后台后很快就会转移到暂停状态。只有为用户提供重要服务的应用才能继续运行任何时间。
我们鼓励您尽可能避免在后台执行并暂停您的应用。如果您发现需要执行后台任务,请参考以下相关指南:
您需要实现至少一种特定的用户服务。
您需要执行一个有限长度的任务。
您可能对“实施长时间运行的后台任务”特别感兴趣:
对于需要更多执行时间来实现的任务,您必须请求特定权限才能在后台运行它们而不会被暂停。在iOS中,只允许特定的应用类型在后台运行:
在后台播放可听内容的应用,例如音乐播放器应用
随时向用户通知其位置信息的应用,例如导航应用
支持互联网协议语音(VoIP)的应用
需要下载和处理新内容的报亭应用
从外部附件接收定期更新的应用