螺纹NFC标签收发Android上的呼叫

时间:2016-01-04 06:18:29

标签: android multithreading nfc rfid java-threads

在我的应用程序中,我需要使用NfcA.transceive()执行多个NFC-A标记读取

此外,应用程序需要执行与不同读取数据相关联的慢速API调用

因此,我在单独的线程上运行Callables来处理各种read-> API任务。

这是一种安全的方法吗?收发注释字符串表示

  

这是一个I / O操作,将阻塞直到完成。

这是否确保我对收发(来自不同线程)的调用不会相互干扰?

1 个答案:

答案 0 :(得分:1)

是的,根据其他线程将等待的文档,但是您应该知道以下内容:

  

public void close ()还导致其他线程上的所有阻塞I / O操作被取消并返回IOException

因此,如果任何线程调用close(),它将导致所有其他等待线程接收IOException。你怎么知道哪个线程是最后一个才能正确调用close()?如果标签在所有线程完成之前超出范围会发生什么?

我会提出一种替代方法,在单个线程中按顺序执行所有读取/收发操作,当每个操作完成时,将数据放入队列以供另一个线程池处理,然后再继续进行下一个收发操作。这可以避免阻塞,如果标签超出范围等,也可以更快,更容易地处理清理