当设备进入休眠状态时,哪个ios版本调用applicationWillResignActive并调用applicationDidEnterBackground?

时间:2011-12-29 16:00:08

标签: iphone ios4 ios5 version device

我已经确定实验性地使用了一些设备(据我所知)运行iOS 4的iOS设备在进入睡眠状态时调用applicationWillResignActive(当用户按下右上方按钮时,或屏幕关闭时)不活动,但应用程序仍在运行),但运行iOS 5的设备会在发生这种情况时调用applicationDidEnterBackground,并且只调用applicationWillResignActive来处理传入的短信/电话,或者用户拉下通知栏(换句话说,非常临时的事件。)

然而,iOS设备要睡觉并不是一个非常短的事件(可能是一个非常长的事件),因此在这种情况下,我想取消当前的服务器呼叫,我不会这样做。非常短暂的中断需要做(并且不想做)。

我的问题是:有没有办法告诉应用程序何时进入睡眠而不是任何其他较短的中断(即文本消息),和/或,或者,有人知道我的猜测是否上面关于什么是iOS 4 vs 5设备在睡觉时打电话确实是正确的吗?

这就是我现在所拥有的,在applicationWillResignActive:

    if ([[[UIDevice currentDevice]systemVersion] hasPrefix:@"4"] ) { 
        //cancel server call
    }

据我所知,这个工作正常,但我读过的关于如何在设备上确定iOS版本的每个帖子都表示如果可能的话你不应该使用该代码,而应该调用正确的选择器,你正在尝试做什么。但我不知道在这种情况下会是什么。

1 个答案:

答案 0 :(得分:0)

在这篇文章中:Understanding iOS 4 Backgrounding and Delegate Messaging,您可以找到有关何时发送委托消息的出色解释。特别是,根据不同的iOS版本,它解释了何时发送applicationWillResignActive和applicationDidEnterBackground。

我希望它可以帮到你。

干杯