我BluetoothServerSocket.accept()
用来接受传入的蓝牙连接。众所周知,BluetoothServerSocket.accept()
阻塞直到传入连接或直到错误(抛出IOException
)。一切正常,除了以下几点:调用后禁用蓝牙时BluetoothServerSocket.accept()
,不会发生异常。结果,线程被永远阻塞,直到close()
被调用。这对我来说毫无意义,因为蓝牙适配器在关闭时绝对无法接受连接。
有一个丑陋的方法来解决这个问题,BluetoothSocket.accept(int timeout)
也可以监听BluetoothAdapter.ACTION_STATE_CHANGED
事件,并close()
在它关闭时调用接受线程。但对于这样一个简单的事件来说,这听起来太骇人听闻了。
BluetoothServerSocket.accept()
禁用蓝牙适配器后是否有更干净的返回方式?