我已经有了基本的设置,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使用事件循环执行将结果发布到回调等操作。如果您在主线程上等待,则会阻塞事件循环,从而确保永远不会调用回调(并且您的应用程序通常将无响应)。