Cordova插件-Java:等待回调

时间:2019-06-28 12:47:50

标签: java synchronization cordova-plugins

我有一个通过蓝牙对远程硬件起作用的插件方法。 它将命令发送到硬件,硬件执行一些操作。 硬件操作完成后,将调用在我的方法之外定义的回调。

在回调被调用后,我只想调用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();
}

亲切问候

0 个答案:

没有答案