我有一个数组列表,它存储我接收到的数据并通过蓝牙异步传输。
我有一个写线程和一个读线程来访问数组列表。我正在尝试模拟蓝牙回声(蓝牙是回声我发送的所有内容)。
private class ReadThread extends Thread {
@Override
public void run() {
super.run();
while(!isInterrupted()) {
try {
byte[] buffer = new byte[64];
if (mInputStream == null) return;
size = mInputStream.read(buffer);
if (size == 64) {
if (bufferList.isEmpty()){
Log.i("AOK Fail","Nothing to AOK");
}
if (compareByte(buffer,bufferList.get(0) == true) // Compare data in this 2 byte array
bufferList.remove(0);
}
} catch (IOException e) {
e.printStackTrace();
return;
}
}
}
}
private class WriteThread extends Thread {
@Override
public void run() {
super.run();
while(!isInterrupted()) {
try {
count++;
if (bufferList.isEmpty() == false && count < 3){
write(bufferList.get(0));
count = 0;
}else{
// Drop data after 3 fail attempt
bufferList.remove(0);
count=0;
}
Thread.sleep(500);
} catch (IOException e) {
e.printStackTrace();
return;
}
}
}
}
按下按钮时,我将发送数据。如果我传输缓慢,它工作正常。但是,当我开始快速单击时它会失败(排队传输数据)。一旦我收到 AOK Fail 消息。所有剩余的数据都将 AOK Fail 即使是新添加的数据。为什么呢
如果是线程问题,不应该在传输所有数据后解决吗?