在onReceive()一次触发失败后,以下要发送的数据将被触发两次?

时间:2019-06-21 10:52:55

标签: android broadcastreceiver android-broadcast

我正在使用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)

如何解决此问题,以使数据根据正确的顺序依次传递?

0 个答案:

没有答案