这个问题,谈谈我的解决方法,
我是通过异步线程去更新数据的,
第一次尝试用eventbus去异步更新数据,结果报错:Cannot add Entry because dataSetIndex too high or too low,跟踪数据流发现在addEntity的时候出现的时候数据进来了两次,估计就是这个问题了。
解决办法,我换了一个思路进行处理,直接用while(true)进行处理,暂时问题解决了,具体需要再测是不是可以实时更新数据了。
CbtLogs.e("onDataListener:" + "sampleECU");//线程自动发送数据
new Thread(new Runnable() {
@Override
public void run() {
while (true){
try {
Thread.sleep(50);
ArrayList<Byte> recevieData=udsProcess.getIso14229().getReceiveData();
System.out.printf("recevieDataCANMessage = ");
for (byte b : recevieData) {
System.out.printf("%2h ", (int)(b&0xFF));
}
mModel.updateUDSData(recevieData);//将获取到的蓝牙数据传递给model处理,
mview.showSampleView(((SampleDataModel) mModel).getMap());//将获取到的map传递给view用来更新界面
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();