我有一个蓝牙侦听器,在我的iOS应用程序的调试模式下可以正常工作。但是,当我为其构建IPA时。它不再起作用。
这里是听众
setupBluetooth() {
console.log('the setup')
this.aDeviceStatusChanged = OVBluetoothEventEmitter.addListener('oliveDeviceStatusChanged', event => {
console.log('the event', event)
if (EventUtils.eventCodeEquals(event, 'DISCONNECTED')) {
NavUtils.resetTo(this.navigator, 'ListPage', { originPoint: true });
console.log('last chance')
}
});
}
当我通过IPA运行应用程序时,是什么导致监听器失败?
这是更新的代码:
setupBluetooth() {
console.log('the setup')
this.somethingDeviceStatusChanged = SomethingBluetoothEventEmitter.addListener('somethingDeviceStatusChanged', event => {
console.log('the event', event)
console.log('the event', event.code)
let tempStr = JSON.stringify(event.code);
if (tempStr === '"DISCONNECTED"') {
NavUtils.resetTo(this.navigator, 'somethingListPage', { originPoint: true });
console.log('last chance')
}
})
}
答案 0 :(得分:0)
事实证明,调试模式比应用程序的Release / IPA版本运行慢得多。另外,由于Java / Objective-C是多线程的,因此内存释放几乎是即时发生的,而在Javascript(单线程)中则存在一个队列。结果是在释放模式下运行时,内存释放在Java / Objective C端发生得如此之快,以至于Javascript代码运行时,该事件/变量不再存在。解决此问题的方法是创建一个变量来保存事件,以便即使在内存释放时,JS代码也要读取一些内容。