【问题标题】:How to detect what triggered applicationWillResignActive?如何检测什么触发了applicationWillResignActive?
【发布时间】:2011-10-10 11:08:37
【问题描述】:

我有一个视频聊天应用程序,我想在设备锁定时断开通话,但在收到短信、日历、电池电量不足或任何其他类型的通知时保持连接。问题是,我一生都无法弄清楚如何确定是什么导致我的应用委托的 applicationWillResignActive 选择器被调用。

我考虑过实现某种超时,如果在特定秒数内未调用 applicationDidBecomeActive,我将断开连接,但错误地假设用户将在该秒数内忽略或接受收到的通知。

谁能帮我找出一种方法来确定导致调用 applicationWillResignActive 选择器的原因?

非常感谢, 梅森

【问题讨论】:

  • 你在这里检查了所有的 UIApplication 状态变化吗? developer.apple.com/library/ios/#documentation/UIKit/Reference/…
  • @Luke,是的,我做到了。我还阅读了 响应中断部分下的this,但找不到任何有助于解决我的问题的内容。
  • @Luke 另外,当我在 applicationWillResignActive 检查 UIApplicationState 时,当前状态是 UIApplicationStateActive
  • 我倾向于 James 的帖子中提出的观点 - 如果您可以在设备锁定时断开呼叫,并且对于所有其他运行时中断,请保持其运行......我希望各州UIApplication 涵盖的内容就足够了。在你自己关于 applicationDidBecomeActive 没有在一段时间内被调用的观点......你可以编写一些设置代码,当应用程序第一次运行时从用户那里获取超时值 - 虽然不确定它会如何与 Apple 一起滚动。跨度>

标签: iphone ios uiapplicationdelegate


【解决方案1】:

我认为简短的回答可能是,您无法真正确定导致辞职电话的具体原因,但是您只能根据它是否真的在后台进行计划。

查看此链接,其中详细介绍了多任务处理的步骤。

http://www.cocoanetics.com/2010/07/understanding-ios-4-backgrounding-and-delegate-messaging/

祝你好运,你看起来是个了不起的人!

【讨论】:

  • 确实,您无法具体说明导致辞职电话的原因,但我确实为我的场景找到了解决方法。当设备被锁定时,AVFoundation 停止将捕获的帧发送给一个委托人。因此,当我进行视频通话时,我知道在调用 willResign 后停止接收新帧时设备已锁定。谢谢詹姆斯,你一个非常棒的人。
【解决方案2】:

就我而言,我在 NSNotification.Name.UIApplicationWillResignActive

上停止了视频捕获

现在,我正在使用: NSNotification.Name.UIApplicationDidEnterBackground

当消息来临时或有人呼叫捕获设备时不会触发。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-08
    • 1970-01-01
    • 2019-09-07
    • 2017-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多