我的应用程序使用NSTimer,当iPhone进入待机模式时(通过按下硬件按钮或空闲计时器),NSTimer似乎不会触发.
当我再次激活iPhone时,我的应用仍处于前台.当iPhone处于待机模式时,第三方应用会发生什么?
虽然在这里不明显,但我相信原始海报确实找到了他的问题的答案,在iPhone开发者论坛中启动了一个线程(可在此处获得)(我最终必须找到自己,因为这里没有共享信息).
如果其他人有相同的问题,并在将来找到该页面,这里有一个有用的回复,由Apple在论坛上发布的名为"eskimo1"的人发布了(我稍微编辑了一下,以便在没有上下文的情况下更容易阅读由整个原始线程提供):
关于iPhone应用程序状态术语,"活动"并不意味着"清醒",它意味着"附加到GUI".可以想象它类似于Mac OS X中的"最前面".当您锁定设备时,您的应用程序将停用,但设备可能会或可能不会进入睡眠状态
如果设备连接到主电源(即通过USB),iPhone OS很少会睡眠.但是,如果使用电池运行,它可以睡觉.
屏幕锁定后不久(根据Oliver Drobnik,20秒),设备会休眠.这就像关闭笔记本电脑的盖子; 主CPU上的所有活动都停止.
如果设备在正确的音频会话中播放音频,则不会发生这种情况.有关详细信息,请参阅DTS Q&A QA1626"音频会话 - 确保在屏幕锁定时继续播放音频".
请注意,idleTimerDisabled属性(可以打开以防止屏幕在应用程序运行时关闭)是关于在用户不活动后锁定屏幕.它与系统睡眠没有直接关系(它间接相关的是系统可能在锁定后不久就会睡觉).
请参阅" iPhone OS编程指南"中的" 应用程序中断",尤其是applicationWillResignActive
和applicationDidBecomeActive
事件.(整个指南当然值得一读.)当你忽略这些事件时,计时器似乎会持续一段时间然后停止.听起来合乎逻辑,如果继续运行,应用程序可能很容易耗尽电池.应用程序究竟发生了什么?我猜它根本没有得到任何CPU时间 - 它会冻结,只有在你重新启动机器时解冻.