huohou

个性签名:业精于勤而荒于嬉,行成于思而毁于随。

    1. 本帖最后由 huohou 于 2014-11-21 18:16 编辑 我觉得不是close没有执行的原因,当然你的解决方法(在每次connect前,检查是否已经有了Gatt对象,有了的话,就close,然后建立连接重新分配-这个方法)是没错的。真实的原因是每一次连接都会生成一个Gatt对象,每一个Gatt对象都需要断开连接,不然的话,一旦其中有一个Gatt对象没有断开连接,系统就会认为你是在连接的,让你连扫描都扫描不到这个设备,就别说继续连接了。。。。你的方法是正好保证了系统中只有一个Gatt对象,且把真实的(也就是最后的那个)给保存了起来,用于实际操作。而disconnect本身在这个算法里面就可以代替close。close和disconnect的区别在于,close除了断开连接外,还会释放掉所有资源,导致不可以直接在后面的操作中用gatt对象的connect直接连接,而disconnect并不释放资源,所以,所有的资源还保存着,就可以用Gatt的connect进行简单恢复连接,而不是在device那一层进行操作。至于为啥允许可以对一个外设连接多次,这个事情我也很纳闷,不知道什么场景需要这样的操作。。。

最近访客

< 1/1 >

统计信息

已有2人来访过

  • 芯积分:--
  • 好友:--
  • 主题:--
  • 回复:1

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言