如何检测App何时进入暂停状态?

时间:2012-02-01 10:45:57

标签: iphone objective-c multitasking

当我的应用进入或退出暂停状态时,是否有被触发的事件或任何告知事件?

编辑:我已经阅读了与AppDelegate事件相关的所有文档,并且我知道没有任何方法可以从该类检测到移动到暂停状态。

具体来说,如果我的应用程序正在后台播放音乐,并且音乐暂停,例如通过遥控器,音乐,以及之后不久的所有执行,都会暂停。 当用户通过遥控器(或例如锁定屏幕)再次按下播放时,音乐再次开始并继续执行(app从暂停状态移动到背景状态)。 有什么方法可以检测到这个吗?我需要关闭一些服务,如断开网络套接字,停止bonjour服务等......

2 个答案:

答案 0 :(得分:5)

看看这张图片,它显示了app的完整生命周期

http://www.cocoanetics.com/files/UIApplication_Delegate_post_4_v121.jpg

答案 1 :(得分:2)

我最终使用了应用程序resigned /变为活动状态和(因为我的应用程序在后台播放音频)AudioSession对象的Begin和End AudioInterruption事件的组合,以及任务完成处理程序的回调决定我的应用程序是否即将被暂停。

例如(伪代码):

if(BeginAudioInterruption && AppIsInBackground)
   WillSuspend();
else if(AppWillResignActive && MusicPlaying == false)
   WillSuspend();
else if(AppWillResignActive && TaskCompletion.TimeRemainingSeconds < 5 && MusicPlaying == false)
  WillSuspend();
else // etc...