下面这段代码是我接收串口数据的
private class ReadThread extends Thread {
@Override
public void run() {
super.run();
while (!isInterrupted()) {
int size;
try {
byte[] buffer = new byte[30];
if (mInputStream == null)
return;
mInputStream.read(buffer);
//根据数据协议规则,判断每条数据的长度
size=Integer.parseInt(Integer.toHexString(buffer[2]))+3;
if (size > 3) {
onDataReceived(buffer, size); //调用更新UI方法
}
} catch (IOException e) {
e.printStackTrace();
return;
}
}
}
}
下来的截图是我处理UI的。
void onDataReceived(final byte[] buffer, final int size) {
// TODO Auto-generated method stub
MainActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
String reString="";
if (mReception!=null) {
for (int i = 0; i <size; i++) {
String hexString=Integer.toHexString(buffer[i]&0xFF);
if (hexString.length()==1) {
hexString='0'+hexString;
}
reString+=hexString.toUpperCase();
}
mReception.append(reString+"\r\n");
Toast.makeText(getApplicationContext(), "接收成功"+reString,
Toast.LENGTH_SHORT).show();
Intent intent=new Intent(MainActivity.this,Main2Activity.class);
startActivity(intent);
MainActivity.this.finish();
}
}
});
}
我现在的问题是,当我跳转页面,并关闭当前页面之后,我在新的页面在接收一条数据时,这条数据会让原页面给拦截接收,并再次把跳转页面执行了一遍(就是把新页面打开了两次),之后在发数据,它就可以正常在跳转之后的页面接收了。 为什么啊? 是我那么有加判断,还是我写的代码,跟线程不符
其中要根据接收的消息来更新ui,或跳转页面