收藏
回答

为什么蓝牙回调函数会是栈中其他 page 回调函数被调用, 而不是当前 page 回调函数被调用?

  1. 我们有个 ble 应用, 会和一个 ble 的外设进行数据交互. 会在 A page 内做搜索的动作, B page 内做 ble 连接和数据收发的动作
  2. 然后我们供应商提供一个 C page, 用于 ota 升级这个 ble 的外设
  3. 如果我把 C page 设为启动后的第一个 page, C page 的功能一切正常, 可以搜索设备, 收发 ble 数据
  4. 如果我是按 A -> B -> C 这个顺序启动了 C page, C page 中搜索设备的回调无响应, 会在 A page 中收到回调
  5. 我尝试加入一个 X page 作为启动的第一个 page, 按 X->A->B 启动, 当在 B 中需要启动 C 时, 调用 wx.reLaunch() 跳转到 C, 这时回调仍然是 A pages 中的回调函数被调用
  6. 如果我在 B 中掉用 wx.navigateBack() 回退到 A, 在 A 的 onShow() 再回推到 X, 在 X 中再进入 wx.navigateTo() 进入到 C, 现象和第 5 点一样
  7. 上面说的回调是 wx.onBluetoothDeviceFound()

基础库的版本是: 2.19.4

回答关注问题邀请回答
收藏
登录 后发表内容