使用 Apple 的 EADemo 作为基础,我试图了解背景对 EAAccessories 的影响。
当我收到连接通知时,我会获取附件,检查协议并获取流。通过流,我设置了委托,在 RunLoop 上进行调度,然后打开
目前,当我进入后台时,我将这一切都撕毁了。我收回我所做的一切并释放所有对象。
我还在 didDisconnect 上进行了拆卸。
进入后,我并不总是得到 didConnect,因此我遍历connectedAccessory 列表并检查是否有适当的设备。
-=-=-=-
EA 演示在视图上设置和拆除会话,因此我们看不到是否存在后台持久性。
EA 演示代码似乎建议您可以拆卸并返回,只要设备本身没有断开连接。
然而,会话和设备有时似乎会进入当 iOS 设备已睡眠或将应用程序置于后台时的状态,并且设备将停止确认数据,或者更糟糕的是,将停止从流中提取数据直至流填满向上。
问题:使用后台时,除非我确实收到 didDisconnect 通知,否则我是否应该拆除活动的会话/附件。有了这个,我假设会话和附件结构(也许还有流)将在后台生存?
我对外部附件框架的经验是,它最初在稳健性方面设计得很差。在 iOS 4.0 之前,尝试连接多个配件会产生以下错误消息:
Cannot use accessory. Only one accessory can be in use at a time.
现在看来,当应用程序进入后台时,配件会发生什么情况,人们似乎并没有太多关注。我确信正确的行为是在附件断开连接时释放 EASession 实例。但我不认为进入后台的应用程序有资格作为断开连接的附件。如果您记录配件的connectedID 值,则没有什么可参考的,您会注意到它们确实如此not更改只是为了切换到后台并返回前台。我怀疑除非 EAAccessoryManager 收到附件更改(连接/断开)通知,否则连接的 EAAccessory 实例列表不会刷新。
我一直在尝试拆卸并重新创建 EASession 实例,但失败了。我现在将尝试在整个后台/前台转换过程中将 EASession 保留在适当的位置。我担心的一个问题是我的应用程序在后台时不会收到 EAAccessoryDidDisconnectNotification 和 EAAccessoryDidConnectNotification 通知。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)