5

这个问题似乎是这个论坛上其他几个人的本质。我相信活动的 iPhone 应用程序有可能继续运行,特别是在进入非活动状态后继续接收计时器回调(通过空闲计时器启动屏幕锁定,或通过用户按下硬件锁定按钮)。

该文档特别指出,当应用程序处于非活动状态时,它正在执行,但不发送传入事件(我没有提供链接,因为我对 NDA 感到不安——我应该放松一下吗?整个帖子是否违反了?叹息)。

此外,用户“Ambr Str”的两个答案直接表明可以继续接收计时器回调,并且他提供了一段代码来实现它(我无法链接到这个,因为我是一个新用户,抱歉 - 搜索以下问题:“当 iPhone 进入待机模式时,iPhone 应用程序会发生什么情况?”找到他的答案)。

我尝试按照他的建议创建回调,但是一旦我的应用程序变为非活动状态,回调就会停止触发。

我刚刚注意到,当 iPhone 插入时,如果应用程序变为非活动状态(由于空闲超时或我按下睡眠按钮),回调确实会继续发生 - 也许我应该让我的用户携带电池和他们一起打包;-)

4

2 回答 2

2

这个问题在 Apple 的论坛上有一个很好的答案。搜索“计时器”和“爱斯基摩人”(提供答案的乐于助人的小伙子)。

简而言之,在应用程序变为非活动状态后不久,手机确实进入睡眠状态。防止这种情况的唯一方法是播放一些音频(或在后台应用程序中播放一些音频)。在播放音频时,手机不会休眠,您的应用程序会继续运行。

建议播放保持清醒的音频是一种技巧,如果可能的话,你不应该这样做。我认为在我的应用程序(执行穿插有静默期的音频播放)中,该方法是有效的,即使不是理想的!

于 2009-05-22T11:31:22.527 回答
0

我有一个应用程序。其中包括一个嵌入式网络服务器。我计划提供禁用自动睡眠 IFF 服务器已打开且设备已通电的选项。所以你可以考虑检查 UIDevice 的 batteryState 属性。因此,如果 batteryState != UIDeviceBatteryStateUnplugged,请继续禁用空闲计时器。(注意:文档说 UIDeviceBatteryStateUnknown 将在模拟器中返回。)

您还需要监听 UIDeviceBatteryStateUnplugged 通知并适当地设置 batteryMonitoringEnabled。

于 2009-09-23T19:06:17.613 回答