8

使用 Apple 的 EADemo 作为基础,我试图了解背景对 EAAccessories 的影响。

当我收到 connectNotification 时,我会得到附件,检查协议并获取流。使用流我设置委托,在 RunLoop 上安排,然后打开

目前,当我进入后台时,我将其全部拆除。我退出我所做的一切并释放所有对象。

我也在 didDisconnect 上做这个拆解。

进入后,我并不总是得到 didConnect,所以我遍历 connectedAccessory 列表并检查合适的设备。

-=-=-=-

EA 演示在视图上设置和拆除会话,因此我们看不到是否存在后台持久性。

只要设备本身没有断开连接,EA Demo 代码似乎建议您可以拆下并返回。

然而,会话和设备有时似乎进入了一种状态,当 iOS 设备已休眠或将应用程序置于后台时,设备将停止确认数据,或者更糟糕的是,将停止从流中提取数据到流填充的点向上。


问题:使用后台处理时,我是否应该关闭处于活动状态的会话/附件,除非我确实收到了 didDisconnect 通知。有了这个,我假设 Session 和 Accessory 结构(可能还有流)将在后台生存?

4

1 回答 1

3

我对外部附件框架的经验是,它最初的设计很糟糕,就健壮性而言。在 iOS 4.0 之前,尝试连接多个配件会产生以下错误消息:

Cannot use accessory. Only one accessory can be in use at a time.

现在似乎没有太多关注当应用程序进入后台时配件会发生什么。我确信正确的行为是在附件断开时释放 EASession 实例。但我不认为进入后台的应用程序有资格作为附件断开连接。如果您记录您的配件的 connectedID 的值,没有什么可做的,您会注意到它们不会仅仅因为切换到后台和返回到前台而改变。我怀疑连接的 EAAccessory 实例列表不会刷新,除非 EAAccessoryManager 被通知附件的更改(连接/断开)。

我一直在尝试拆除并重新创建 EASession 实例,但失败了。我现在将尝试在整个背景/前景转换中保留 EASession。我的一个担忧是我的应用在后台不会收到 EAAccessoryDidDisconnectNotification 和 EAAccessoryDidConnectNotification 通知。

于 2010-12-10T17:01:30.683 回答