我创建了一个使用 NSTimer 的应用程序,它每秒都会触发一次。
我的问题是,如果 Iphone 处于睡眠模式,我会延迟 10 到 15
事件触发前的分钟数。我已经 stackoverflowed 并用谷歌搜索了这个
其原因似乎是手机在某些情况下停止监听
处于睡眠模式时的事件。
有些人通过播放静音来解决这个问题,不允许
打电话睡觉。
- 延迟的原因可能是什么?
- 静音解决方案似乎是一种非常“肮脏”的解决方案。还有其他方法可以解决这个问题吗?
- 如果我使用静音解决方案会通过苹果审核吗?
Code:
timer = [NSTimer timerWithTimeInterval:1.0f target:self selector:@selector(goAction)userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
-(void)goAction {
// Here i check for some dates and then call the activateBeepAlarmView
}
好吧,既然没有人回答我的三个问题,我就不得不回答它们:
1. 延迟的原因可能是什么?我必须引用Ben S https://stackoverflow.com/questions/1805202/interacting-with-iphone-while-in-sleep-mode:
一旦 applicationWillResignActive 在您的应用程序上被调用,您只需停止接收事件:
当应用程序从活动状态转换到非活动状态时,委托可以实现此方法来进行调整。当应用程序处于非活动状态时,它正在执行但不调度传入事件。当弹出覆盖窗口或设备锁定时会发生这种情况。
睡眠模式的目的是节省能源。为此,设备将停止侦听您所请求的事件。 NSTimer 事件仍然会触发,因为它们不需要昂贵的(电池方面的)硬件监控。此外,闹钟是使用 NSTimer 实现的,因此即使在睡眠时它们也需要能够运行。否则,人们可能不会醒来并责怪他们的 iPhone。
2.静音解决方案似乎是一个非常“肮脏”的解决方案。还有其他方法可以解决这个问题吗?
不,目前我还没有找到其他解决方案,如果我错了,请随时纠正我。
查看this http://blog.marcopeluso.com/2009/08/23/how-to-prevent-iphone-from-deep-sleeping/博客文章如何做到这一点。
3. 如果我使用静音方案会通过苹果审核吗?
Yes
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)