While(1) 循环在 IOS 的后台不工作
Posted
技术标签:
【中文标题】While(1) 循环在 IOS 的后台不工作【英文标题】:While(1) loop is not working in background in IOS 【发布时间】:2012-08-06 05:23:06 【问题描述】:我试图在后台运行一些服务,所以我通过在后台委托中使用while(1)
循环在后台触发了一段时间。
在模拟器上运行正常,但在将其传输到我的 iPad 时,应用程序在进入后台后崩溃。
while(1)
循环在设备上不起作用吗?
【问题讨论】:
我希望你的“while (1)
”循环在一个单独的线程中,否则你会挂起你的用户界面(和你的应用程序)。向我们展示一些您的循环的代码。
正如迈克尔所说,代码真的很有帮助。此外,有关您正在做什么以及您正在努力实现的目标的更多背景信息也会有所帮助。
【参考方案1】:
在模拟器上运行正常,但在将其传输到 Ipad 设备时,应用程序在进入后台后崩溃。
如果我正确解释了您所写的内容,我认为您的应用程序在 ios 设备上被杀死只是因为除了少数备用情况外,您不允许在应用程序运行时在您的应用程序中运行线程“在后台”(即,在用户通过单击主页按钮“退出”它之后)。
所以,如果我的理解是正确的,那么您的应用属于特定类别 应用程序(见下文),或者您唯一能做的就是“注册”一个后台线程,以便在应用程序进入后台后运行一段有限的时间。
摘自Background Execution and Multitasking
大多数应用在进入后台后不久就会进入暂停状态。只有为用户提供重要服务的应用才能继续运行任意时间。
我们鼓励您尽可能避免在后台执行并让您的应用暂停。如果您发现需要执行后台任务,以下是一些合适的指导原则:
您需要至少实现几种特定用户服务中的一种。
您需要执行单个有限长度的任务。
您可能对“实现长时间运行的后台任务”特别感兴趣:
对于需要更多执行时间来执行的任务,您必须请求特定权限才能在后台运行它们而不会被暂停。在 iOS 中,只允许特定的应用类型在后台运行:
在后台向用户播放可听内容的应用,例如音乐播放器应用
让用户随时了解其位置的应用,例如导航应用
支持互联网协议语音 (VoIP) 的应用
需要下载和处理新内容的报亭应用
从外部配件接收定期更新的应用
【讨论】:
以上是关于While(1) 循环在 IOS 的后台不工作的主要内容,如果未能解决你的问题,请参考以下文章
试图在另一个while循环中获得一个while循环,但它不能一起工作[重复]