Iphone iOS idleTimerDisabled行为
我的iPhone应用程序有两种状态:UI和游戏。 游戏仅使用设备倾斜进行,因此我在游戏开始时关闭了自动睡眠:Iphone iOS idleTimerDisabled行为,iphone,ios,timer,Iphone,Ios,Timer,我的iPhone应用程序有两种状态:UI和游戏。 游戏仅使用设备倾斜进行,因此我在游戏开始时关闭了自动睡眠: [[UIApplication sharedApplication].idleTimerDisabled = TRUE; 但一旦我回到UI,我希望自动睡眠再次激活。所以在游戏结束后,我会恢复它: [[UIApplication sharedApplication].idleTimerDisabled = FALSE; 经过长时间的游戏后,我在游戏后看到的第一个UI屏幕立即变暗。 所以
[[UIApplication sharedApplication].idleTimerDisabled = TRUE;
但一旦我回到UI,我希望自动睡眠再次激活。所以在游戏结束后,我会恢复它:
[[UIApplication sharedApplication].idleTimerDisabled = FALSE;
经过长时间的游戏后,我在游戏后看到的第一个UI屏幕立即变暗。
所以,当空闲计时器被禁用时,它似乎仍然在计算时间。它在“启用”后立即开火。如何解决此问题?这可能有用
我在使用音乐/音频播放器时也遇到了问题,这似乎重新激活了计时器
ps:在ObjectiveC中,您应该使用YES/NO而不是FALSE/TRUE我不知道是否可以通过编程方式重置
idleTimer
,但一个选项是要求用户在返回屏幕之前触摸屏幕
另一个选项是在返回后设置自己的超时,并等待超时完成,然后再设置
idleTimerDisabled=NO
。如果您再次开始游戏,请记住清除此超时。我看不出我的问题与您提到的答案之间有直接关系。据我所知,他们在启动禁用计时器时遇到问题。他们的解决方案是把它设为“否”,然后立即设为“是”。我的情况是,计时器正常启动和停用,但它“记住”其停用时间的长度,一旦启动,立即启动。难道没有办法通过编程“触摸”设备从而重置计时器吗?我想这个技巧解决了我的空闲计时器问题,我将其设置为UISwitch的值(例如0/1)。第二个选项正是我已经使用的。我想知道是否有更少的“黑客”方法来修正这个问题。猜测系统空闲超时值不是很好,但除此之外,这是一个非常好的“黑客”。你可以尝试一个程序化的触摸事件,但即使它起作用,它也不会少一些“骇客”。@Gil也许我不理解这一点。如果任意延迟设置idleTimerDisabled=NO call help,OP会看到什么“竞争条件”?例如,如果iOS计时器设置为30秒,当前为25秒,那么应用程序返回后将强制延迟5秒。因为你不知道iOS内部空闲计时器的状态,所以这不会导致同样的问题吗?@stonedauwg没有竞争条件。我的建议是将设置idleTimerDisabled
延迟足够长的时间,以便用户有机会与UI交互。我可能会延迟30秒,这是可配置的最低自动锁定延迟。@Gil我明白了。是的,我想我还是喜欢这种方法。谢谢