我有一个通过蓝牙对远程硬件起作用的插件方法。 它将命令发送到硬件,硬件执行一些操作。 硬件操作完成后,将调用在我的方法之外定义的回调。
在回调被调用后,我只想调用CallbackContext.success(...)
或CallbackContext.error(...)
,所以我想等待回调被调用。
我将如何处理?
例如CordovaPlugin
类的一部分:
public void actOnHardware(CallbackContext callbackContext)
{
this.verifiyBluetoothEnabled();
this.hardwareConnection.doSomething()
// Now wait for the callback to complete before calling
// callbackContext.success() or error()
callbackContext.error("Not implemented.");
}
@Override
public void hardwareActionCallback(result)
{
// Notify actOnHardware() that we're finished.
}
这似乎更多是Java的东西,但是我无法理解。
使用Object.wait()
和Object.notify()
是可行的选项还是调用wait()
阻止了由于线程问题而导致回调被调用?如果是这样-该如何解决?
例如这样做是否足够:
private Object lockObj;
private boolean actionFinished;
public void actOnHardware(CallbackContext callbackContext)
{
this.verifiyBluetoothEnabled();
this.actionFinished = false;
this.hardwareConnection.doSomething()
while(!this.actionFinished)
this.lockObj.wait();
callbackContext.error("Not implemented.");
}
@Override
public void hardwareActionCallback(result)
{
this.actionFinished = true;
this.lockObj.notify();
}
亲切问候