是否可以在 Android 中的 BluetoothSocket 的 inputstream.read() 函数中实现超时?
我试过使用 Thread.sleep() 但这只会暂停我的活动。
- -更新 - -
我有一个想法,在这里创建 2 个线程代码(t1 和 t2),其中每个线程中断其他线程,其中一个线程(t1)执行睡眠(5000)然后中断另一个线程(t2),从另一侧另一个线程( t2)如果在读取输入流中检测到某些字符为 0x0D 中断另一个线程(t1),但这是我的问题,有人可以帮助我吗?因为我没有使用线程的interrupt()方法,希望有人能帮助我,谢谢...
- -更新 - -
public void run(){
while(true){
try {
char r;
String respuesta = "";
while (true) {
r = (char) mmInStream.read();
respuesta += r;
if (r == 0x3e) {
break;
}
}
respuesta = respuesta.replaceAll(" ", "");
Log.d("respuesta", respuesta);
rHandler.obtainMessage(MESSAGE_READ, -1, -1, respuesta).sendToTarget();
} catch (IOException readException) {
Log.e("ServicioGeneral", "Error de lectura", readException);
this.interrupt();
connectionLost();
// posibly break();
}
}
}
这是我在其他线程中出现某些东西时的实现,问题是如果我没有从 de mmInStream 获得 0x3e 字符,则会达到超时。
我认为在第二个示例中我必须使用 notifyAll(),但是,我什么时候必须启动 readThread()?
谢谢你,@weeman