【发布时间】:2016-12-20 13:55:08
【问题描述】:
在使用device.createRfcommSocketToServiceRecord(MY_UUID) 创建的蓝牙套接字上,我希望在一段时间后什么都没有到达,运行一些代码,但仍然能够在字节到达后立即处理它们。
.setSoTimeout 的 description 准确地解释了我愿意做什么:
将此选项设置为非零超时后,对与此 Socket 关联的 InputStream 的 read() 调用将仅阻塞此时间量。如果超时到期,则会引发 java.net.SocketTimeoutException,尽管 Socket 仍然有效。
因此,将我的代码放入 catch 语句中似乎是绝佳机会。
但不幸的是,根据我的 Android Studio,.setSoTimeout 不适用于蓝牙套接字。如果没有这种方法,我如何实现这样的功能?
Thread.sleep 显然也不是一个选项,因为我无法锁定线程。
【问题讨论】:
-
你会使用处理程序来做到这一点,我的意思是替换 thread.sleep。
标签: android multithreading sockets bluetooth socket-timeout-exception