Skip to content
保证多个蓝牙扫描模块访问同一个manager实例的方式

新建util.js

js
import { BleManager } from 'react-native-ble-plx';
let instanceCount = 0;
function Singleton() {
    // 检查是否已经存在实例
    if (!Singleton.instance) {
        // 如果不存在实例,则创建实例并赋值
        // 初始化实例的属性
        this.manager = new BleManager();
        instanceCount += 1;
        console.log(`BleManager 实例创建次数:${instanceCount}`);
        Singleton.instance = this;
    }
    return Singleton.instance;
}

export default Singleton;

每个页面都是用这个方法获取manager实例,代码如下

js
import Singleton from '../../util';

const manager =new Singleton().manager

后面正常使用manager的地方,都用这个方法获取manager实例,保证了整个项目不会重复多次创建实例,以导致蓝牙扫描出错