【问题标题】:How to detect when App moves to/from Suspended state?如何检测 App 何时移入/移出 Suspended 状态?
【发布时间】:2012-02-01 10:45:57
【问题描述】:

是否有一个事件被触发,或者有什么方法可以告诉我的应用何时进入或退出暂停状态?

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

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

【问题讨论】:

    标签: iphone objective-c multitasking


    【解决方案1】:

    看看这张图片,它显示了应用程序的完整生命周期

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

    【讨论】:

      【解决方案2】:

      我最终使用了应用程序退出/变为活动状态和(因为我的应用程序在后台播放音频)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...
      

      【讨论】:

        猜你喜欢
        • 2016-11-08
        • 2010-10-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-09
        相关资源
        最近更新 更多