如何停止蓝牙读取中挂起的线程

时间:2011-09-14 23:20:21

标签: android multithreading bluetooth

我的应用程序显示来自稳定蓝牙文本输入的数据。

在Android 2.3.4中,如果我关闭套接字,则立即抛出IO异常。在2.2中只是大部分时间。

我试图在调用onStop()时停止读取。然后在onStart()中重新连接。

有没有更好的方法可以杀死在可能适用于所有版本的inputStream读取上挂起的线程?

由于 TomZ

1 个答案:

答案 0 :(得分:0)

我尝试中断任务并陷入多种类型的异常,这取决于它在中断时的工作情况以及编译错误,我正在捕获它所说的无法抛出的异常。即使我确实获得了一些工作代码,它仍然存在Froyo(Galaxy S - Vibrant)的可靠性问题。

所以我备份并尝试在具有短暂睡眠的循环中使用InputStream.available,并检查设置为结束读取任务的标志(因此除了睡眠之外,任务从未被暂停)。这适用于各种Android版本。

似乎诀窍是不要从外部停止线程,而是让它检测到退出并自行返回的需要。

看起来有点像kludge,有点轮询读数。但代码现在稳定,手机性能似乎没有受到影响。