这个问题似乎是这个论坛上其他几个人的精髓。我相信活动的iPhone应用程序可以继续运行,特别是在它进入非活动状态后(通过屏幕锁定中的空闲计时器或通过用户按下)继续接收计时器回叫硬件锁定按钮)。
文档明确指出,当应用程序处于非活动状态时,它正在执行,但不会调度传入事件(我没有给出链接,因为我对NDA感到不满 - 我应该放松一下吗?这整篇文章是违背?叹息)。
此外,用户“Ambr Str”的两个答案直接表明可以继续接收定时器回叫,并提供一段代码来实现它(我无法链接到此,因为我是一个新用户,抱歉 - 搜索问题:“当iPhone进入待机模式时,iPhone应用程序会发生什么变化?”找到答案。)
我试图按照他的建议创建我的回叫,但是一旦我的应用程序变为非活动状态,回叫就会停止。
我刚注意到,当iPhone插入时,如果应用程序变为非活动状态(由于空闲时间或我按下睡眠按钮),回拨确实会继续发生 - 也许我应该让我的用户访问随身携带电池组; - )
答案 0 :(得分:2)
Apple的论坛上有一个很好的答案。搜索“计时器”和“爱斯基摩人”(提供答案的有帮助的人)。
简而言之,在应用程序变为非活动状态后不久,手机确实会进入睡眠状态。防止这种情况的唯一方法是播放一些音频(或某些音频在后台应用程序中播放)。在播放音频时,手机将无法休眠,您的应用程序将继续运行。
建议播放保持清醒的音频是一种黑客行为,如果可能的话,你不应该这样做。我认为在我的应用程序(执行音频播放中穿插着静音期),这种方法是有效的,如果不理想的话!
答案 1 :(得分:0)
我有一个应用程序。其中包括嵌入式网络服务器。我打算提供一个禁用自动睡眠IFF的选项,服务器已打开,并且设备已通电。因此,您可以考虑检查UIDevice的batteryState属性。因此,如果batteryState!= UIDeviceBatteryStateUnplugged,请继续并禁用空闲计时器。 (注意:文档说在模拟器中会返回UIDeviceBatteryStateUnknown。)
您还需要侦听UIDeviceBatteryStateUnplugged通知并正确设置batteryMonitoringEnabled。