0

我开发了一个音乐应用程序。在测试它时,我接到了一个 Skype 电话,它在后台停止在我的应用程序中播放音频。我该如何处理?我不理解这种行为。我正在使用带有 iOS 8.1 的 ipad。这是Skype本身的行为吗?

4

1 回答 1

1

这是因为 Skype 是 VoIP 应用程序,而 iOS 默认行为是在接到来电时,正在运行的应用程序暂时处于非活动状态。

我不确定您所说的“我该如何处理”是什么意思。
如果你问是否可以阻止它发生,你不能,因为这是默认的 iOS 行为。

但是,如果您只需要停止/启动应用程序的某些功能(例如重新启动音乐播放器,如果它没有自动发生),您可以使用应用程序委托方法来执行此操作applicationWillResignActive,该方法在应用程序运行时调用即将变为非活动状态,就像你发生的那样,当你接到一个 Skype 电话时,applicationDidBecomeActive当应用程序再次变为活动状态时会调用它。

以上两点来自苹果文档的要点:

applicationWillResignActive:

调用此方法是为了让您的应用知道它即将从活动状态变为非活动状态。这可能发生在某些类型的临时中断(例如来电或短信)或当用户退出应用程序并开始转换到后台状态时。处于非活动状态的应用程序会继续运行,但不会将传入事件分派给响应者。

您应该使用此方法暂停正在进行的任务、禁用计时器并降低 OpenGL ES 帧速率。游戏应使用此方法暂停游戏。处于非活动状态的应用程序在等待转换到活动或后台状态时应该做最少的工作。

应用程序已成为:

调用此方法是为了让您的应用程序知道它已从非活动状态变为活动状态。这可能是因为您的应用程序是由用户或系统启动的。如果用户选择忽略将应用程序暂时发送到非活动状态的中断(例如来电或短信),应用程序也可以返回到活动状态。

您应该使用此方法重新启动应用程序处于非活动状态时暂停(或尚未启动)的所有任务。例如,您可以使用它来重新启动计时器或提高 OpenGL ES 帧速率。如果您的应用以前在后台,您还可以使用它来刷新应用的用户界面。

完整的文档可以在这里找到:UIApplicationDelegate 协议

于 2014-11-15T22:28:51.980 回答