我正在使用LocalBroadcastManager更新从BLE发送的已解析ECG数据:
LocalBroadcastManager.getInstance(this).registerReceiver(ecgReceiver,
new IntentFilter("event_ecg"));
意图包括2种数据类型:值和ID。
-> sendBroadcast()部分:
ecg_intent.putStringArrayListExtra("ecg", result);
ecg_intent.putExtra("ID",String.valueOf(idCounter));
idCounter++;
LocalBroadcastManager.getInstance(bleContext).sendBroadcast(ecg_intent);
-> onReceive()部分:
public void onReceive(Context context, Intent intent) {
ArrayList ecglist = intent.getStringArrayListExtra("ecg");
String ecgID = intent.getStringExtra("ID");
我从LOG中注意到,有时onReceive()无法触发,但是在发生这种丢失之后,接下来要发送的下一个数据将触发两次,这对我造成了不良结果。
这是实际的LOG: 在大多数成功的情况下,LOG如下所示:触发数据后,onReceive()将被触发一次:
D/ send update value : 3598
D/ send update id : 251
D/ receive ID: 251
D/ receive update value: 3598
但是,有时甚至发送了数据,也没有随数据一起接收onReceive()(ID 252),但此后两次接收到ID 253:
D/ send update value : 257
D/ send update ID : 252
->(ID 252 failed to be received here)
D/ send update value : 514
D/ send update ID : 253
D/ receive ID: 253
D/ receive update value: 514
D/ receive ID: 253
D/ receive update: 514
->(ID 253 has been triggered twice here)
如何解决此问题,以使数据根据正确的顺序依次传递?