【发布时间】:2018-03-20 18:04:22
【问题描述】:
我已经完成了这个基本设置,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() 的超时时间总是用完,即使发生中断。只有这样才会执行回调。
有没有办法在回调发生时立即执行,如果有,怎么做?
【问题讨论】:
-
很高兴听到您解决了问题!但是,在 Stackoveflow 上,我们不会将解决方案编辑为问题。请恢复您的编辑并将您的解决方案作为答案发布,然后在自我回答计时器到期后的几天内返回并接受该答案。这是系统认为您的问题已解决的唯一方法(没有关闭)。
-
我能问一下你为什么使用等待/通知吗?这不是你通常必须在 Android 编程中使用的东西。
-
请将您的编辑添加为源代码更改的答案。
-
完成。感谢您的提醒。 @JamesPuderer我正在集成一个SPI协议,其中一个中断引脚用于发出“准备好接收新消息”的信号(除其他外),因此我需要确保在发送下一个中断之前发生中断。有没有比wait()更好的方法?
-
这可以通过更简单的方式完成,无需同步。但是你没有分享足够的代码示例来帮助你
标签: java callback gpio android-things