Dru*_*man 8 notifications bluetooth iphone-accessory ios4 ios
使用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.
Run Code Online (Sandbox Code Playgroud)
现在看来,当应用程序进入后台时,配件会发生什么情况,人们似乎并没有太多关注。我确信正确的行为是在附件断开连接时释放 EASession 实例。但我不认为进入后台的应用程序有资格作为断开连接的附件。如果您记录配件的connectedID 值,则没有什么可参考的,您会注意到它们不会仅仅因为切换到后台并返回前台而发生变化。我怀疑除非 EAAccessoryManager 收到附件更改(连接/断开)通知,否则已连接的 EAAccessory 实例列表不会刷新。
我一直在尝试拆卸并重新创建 EASession 实例,但失败了。我现在将尝试在整个后台/前台转换过程中将 EASession 保留在适当的位置。我担心的一个问题是我的应用程序在后台时不会收到 EAAccessoryDidDisconnectNotification 和 EAAccessoryDidConnectNotification 通知。
| 归档时间: |
|
| 查看次数: |
5063 次 |
| 最近记录: |