Android HostApduService 中的多线程 (NFC)

Android multithreading in HostApduService (NFC)

我在 HostApduService 的子类中使用 processCommandApdu() 方法来响应 NFC 命令。此方法在 Android 主线程上被调用。这些命令应按顺序处理并通过 NFC 通道发送。因此,我想同步处理它们。

有什么好的方法可以在不阻塞 processCommandApdu() 方法内部的情况下强制执行顺序?

您不需要同步命令处理。排序是 ISO/IEC 14443 协议固有的:命令交换总是由 reader 发送到卡(HCE 设备)的命令和卡(HCE)设备发送到 reader。 reader 在收到对前一个命令的响应之前不会发出新命令。如果命令在 reader 收到响应之前超时,reader 会将此解释为与卡的连接丢失。

因此,除非 reader resets/drops 连接,否则在您发送对前一个命令的响应之前不会收到新命令(通过从 [=10 返回 no-null =]) 或调用 sendResponseApdu()).