ios – EAAccessory / EASession在背景中拆解

前端之家收集整理的这篇文章主要介绍了ios – EAAccessory / EASession在背景中拆解前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
使用Apple的EADemo作为基础我试图了解后台对EAAccessories的影响.

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

目前,当我进入背景时,我把它全部撕下来.我退出了我所做的一切并释放了所有物品.

我也在didDisconnect上做了这个拆解.

在进入时,我并不总是得到didConnect,所以我走了connectedAccessory列表并检查适当的设备.

– = – = – = –

EA演示设置并删除视图上的会话,因此我们不会看到是否存在背景持久性.

EA演示代码似乎建议您可以拆除并返回,只要设备本身没有断开连接.

然而,当iOS设备已经睡眠或将应用程序置于后台并且设备将停止确认数据时,会话和设备有时似乎进入状态,或者更糟糕的是将停止将数据从流中拉出到流填充的点起来.

问题:使用后台时,除非我实际收到didDisconnect通知,否则我不应该拆除活动的会话/附件.有了这个,我假设Session和Accessory结构(也许是流)将在后台生存?

解决方法

我对外部附件框架的经验是,在稳健性方面,它最初的设计很差.在iOS 4.0之前,尝试连接多个附件会产生以下错误消息:
Cannot use accessory. Only one accessory can be in use at a time.

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

我一直试图拆除并重新创建EASession实例,但这已经失败了.我现在要尝试在整个背景/前景转换过程中保持EASession的位置.我唯一担心的是我的应用程序在后台时不会收到EAAccessoryDidDisconnectNotification和EAAccessoryDidConnectNotification通知.

猜你在找的iOS相关文章