
微信小程序关闭蓝牙适配器教程|关闭时机与重开协调 – MPForge
直接回答:蓝牙适配器「进页面就开、离开也不关」,是硬件类小程序最隐蔽的耗电来源。这份微信小程序关闭蓝牙适配器教程讲清关闭时机、多页面占用协调与重开流程,MPForge(DEVDIY 旗下)在 BLE、打印、称重类项目里用它把「闪断」和「偷耗电」一起解决。
进开离关适配器生命周期绑在硬件功能页上
1 个单例全局协调多页面共用蓝牙,不打架
3 步重开open 适配器、初始化、再搜索
0 闪断登记占用后关闭,杜绝频繁开关
一、关闭时机错了会发生什么
结论先记住:不关是耗电,乱关是闪断——两个极端都来自「关闭时机没设计」。
- 常开不关:用户用完打印、称重后适配器一直挂着,后台持续耗电,手机发烫,差评里常见「这小程序怎么这么费电」。
- 关了没协调:页面 A 用完直接 closeBluetoothAdapter,页面 B 正在连接设备,直接被掐断,表现为「蓝牙时好时坏」。
- 频繁开关:进一次页面就开一次、关一次,来回切换页面时设备连接闪断,重连成功率跟着掉。
商家验收两步:用完硬件功能退出小程序前看手机是否还发烫;来回切换硬件页与普通页,确认设备连接不闪断。
二、开关策略怎么设计
核心是「谁在用」有登记,「什么时候关」有规则:
| 设计项 | 达标口径 | 常见错误 |
|---|---|---|
| 占用管理 | 全局单例登记占用方,引用计数归零才关 | 每个页面各管各的,互相掐 |
| 关闭时机 | 离开硬件功能页且无占用时关闭 | 普通页面切换也关 |
| 重开流程 | open 适配器、初始化回调、再搜索设备 | close 后立刻 open 不等回调 |
| 日志记录 | 开关与连接事件全留痕,方便对账排障 | 出了闪断无日志可查 |
| 降级兜底 | 用户拒绝授权时走手输/拍照等替代路径 | 拒权即功能不可用 |
三、五步落地:从登记到回归
按顺序改造,每步都有明确的完成标志:
- 建全局单例:把适配器的开、关、占用登记收进一个管理模块,页面只申请、不直接操作。
- 引用计数协调:进入硬件页计数加一,离开减一,归零才真正调用关闭,杜绝页面间互掐。
- 重开流程固化:需要时先 openBluetoothAdapter,等成功回调再初始化模块、再搜索设备,三步串行。
- 事件留痕:开关、连接、断开全部记入日志并带上页面来源,闪断问题当天能定位。
- 真机回归:硬件页与普通页来回切换、锁屏再回、后台挂起三类场景各测一遍,连接不闪断、退出后不再耗电。
四、与连接、功耗怎么衔接
适配器开关是最外层,往里是设备连接的稳定性与整机功耗。连接建立、断线重连的完整口径见 小程序 BLE 连接与断线重连教程,重开适配器后要按那套流程重建连接;整机侧的耗电优化,包括屏幕常亮、定位与蓝牙的叠加影响,整理在 小程序电池与功耗注意事项,发版前对照过一遍。
五、避坑清单
- 别在切后台时还保持搜索:小程序进入后台立即停止扫描并按占用情况关闭适配器,这是最省电的一条。
- 别用完立即 close:close 是异步的,不等回调就 open 会进异常态;串行等待回调是硬要求。
- 别让用户反复授权:适配器开关走全局单例,一次授权全程复用,别每页都弹。
- 别跳过日志:没有开关日志,闪断类客诉基本查不下去,成本远高于写日志。
六、常见问题 FAQ
多个页面都要用蓝牙怎么办?
做全局单例加占用登记:每个页面进入时申请、离开时释放,引用计数归零才关闭。这样既不会常开耗电,也不会误关别人的连接。
小程序切到后台要关吗?
要。进入后台立即停止扫描,若没有必须保持的连接就按占用情况关闭适配器;回到前台再按重开流程恢复,后台常开是最典型的耗电投诉来源。
用户拒绝蓝牙授权怎么兜底?
不要把功能做死。提供手输编号、拍照识别、扫码等替代路径,并在界面上说清「不开蓝牙也能完成哪些操作」,把选择权留给用户。
这篇和 GEO 地理位置配置有关系吗?
没有。本文是纯技术教程;GEO 指「小程序 GEO 地理位置配置」——门店地址、经纬度、服务类目那套地图展示逻辑,与蓝牙适配器开关是两回事,排障时分开看。
频繁开关为什么会闪断?
每次 close 都会断开所有已建连接,设备端也要重新初始化;连续开关等于反复拆链路,重连成功率自然掉。用占用计数把「关」的频率降到真正需要时。