[AI Generated]: fix(*): 修复 SDK bus 不支持 unsubscribe 导致的崩溃,改用标志位防重复订阅;修复 OTA 回调注释逻辑
This commit is contained in:
@@ -151,44 +151,27 @@ App({
|
||||
this.globalData.ppScale.plugin = requirePlugin('ppScale-plugin');
|
||||
},
|
||||
|
||||
// 存储 app 级 bus 回调引用,用于精准 unsubscribe
|
||||
_busCallbacks: {
|
||||
connectState: null,
|
||||
syncDeviceTimeSuccess: null,
|
||||
deviceWillDisconnect: null,
|
||||
},
|
||||
// 标记 app 级 bus 是否已订阅,防止重复叠加
|
||||
_busSubscribed: false,
|
||||
|
||||
/**
|
||||
* 注销全局 bus 事件监听,防止重复订阅叠加
|
||||
* 注销全局 bus 事件监听(重置订阅标志,下次 registerBusListeners 时重新订阅)
|
||||
*/
|
||||
unregisterBusListeners() {
|
||||
const plugin = this.globalData.ppScale.plugin;
|
||||
if (!plugin) return;
|
||||
const cbs = this._busCallbacks;
|
||||
if (cbs.connectState) {
|
||||
plugin.bus.unsubscribe('connectState', cbs.connectState);
|
||||
cbs.connectState = null;
|
||||
}
|
||||
if (cbs.syncDeviceTimeSuccess) {
|
||||
plugin.bus.unsubscribe('syncDeviceTimeSuccess', cbs.syncDeviceTimeSuccess);
|
||||
cbs.syncDeviceTimeSuccess = null;
|
||||
}
|
||||
if (cbs.deviceWillDisconnect) {
|
||||
plugin.bus.unsubscribe('deviceWillDisconnect', cbs.deviceWillDisconnect);
|
||||
cbs.deviceWillDisconnect = null;
|
||||
}
|
||||
this._busSubscribed = false;
|
||||
},
|
||||
|
||||
/**
|
||||
* 注册全局 bus 事件监听(connectState / syncDeviceTimeSuccess / deviceWillDisconnect)
|
||||
* 调用前先 unsubscribe 旧的,防止多次 onShow 导致回调叠加
|
||||
* 通过标志位防止多次 onShow 导致回调叠加(SDK bus 不支持 unsubscribe)
|
||||
*/
|
||||
registerBusListeners() {
|
||||
this.unregisterBusListeners();
|
||||
if (this._busSubscribed) return;
|
||||
this._busSubscribed = true;
|
||||
const plugin = this.globalData.ppScale.plugin;
|
||||
|
||||
// 蓝牙连接状态监听
|
||||
this._busCallbacks.connectState = (res) => {
|
||||
plugin.bus.subscribe('connectState', (res) => {
|
||||
console.log("app.js ===> connectState", res);
|
||||
this.setGlobalData('ppScale.device.connectState', res);
|
||||
if (res == plugin.BLUE_STATE.CONNECTSUCCESS) {
|
||||
@@ -198,22 +181,18 @@ App({
|
||||
this.reconnectDevice();
|
||||
}
|
||||
wx.hideLoading();
|
||||
};
|
||||
});
|
||||
|
||||
// 同步时间
|
||||
this._busCallbacks.syncDeviceTimeSuccess = (res) => {
|
||||
plugin.bus.subscribe('syncDeviceTimeSuccess', (res) => {
|
||||
console.log("app.js ===> syncDeviceTimeSuccess", res);
|
||||
};
|
||||
});
|
||||
|
||||
// 设备自动断开监听
|
||||
this._busCallbacks.deviceWillDisconnect = (res) => {
|
||||
plugin.bus.subscribe('deviceWillDisconnect', (res) => {
|
||||
console.log("app.js ===> deviceWillDisconnect", res);
|
||||
this.setGlobalData('ppScale.device.connectState', plugin.BLUE_STATE.CONNECTFAILED);
|
||||
};
|
||||
|
||||
plugin.bus.subscribe('connectState', this._busCallbacks.connectState);
|
||||
plugin.bus.subscribe('syncDeviceTimeSuccess', this._busCallbacks.syncDeviceTimeSuccess);
|
||||
plugin.bus.subscribe('deviceWillDisconnect', this._busCallbacks.deviceWillDisconnect);
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user