我已经有了基本的设置,interrupt已从外部注册为GPIO引脚的边沿触发回调:

public class Foo {

  private static final Object notifier = new Object();

  public static GpioCallback interrupt = pin -> {
    synchronized (notifier) {
      notifier.notifyAll();
    }
    return true;
  };

  public void waitForInterrupt() {

    try {
      synchronized (notifier) {
        notifier.wait(5000);
      }
      Log.d("FOO", "Done.");
    } catch (InterruptedException e) {
      e.printStackTrace();
    }
  }
}


即使中断发生,wait()的超时也总是耗尽。只有这样才能执行回调。

有没有一种方法可以立即执行回调,如果可以,怎么办?

最佳答案

您可能根本不想使用通知/等待,尤其是在主线程上。

Android使用事件循环执行将结果发布到回调等操作。如果您在主线程上等待,则会阻塞事件循环,从而确保永远不会调用回调(并且您的应用程序通常将无响应)。

10-08 13:25