微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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通知.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐