Я использую LocalBroadcastManager для обновления проанализированных данных ЭКГ, которые отправляются с BLE:
LocalBroadcastManager.getInstance(this).registerReceiver(ecgReceiver,
new IntentFilter("event_ecg"));
Намерение включает 2 типа данных: значение и идентификатор.
-> часть 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");
Я заметил из журнала, что иногда onReceive () не работаетчтобы быть запущенным, но после того, как этот вид пропадания происходит, следующие данные, которые должны быть отправлены, запускаются дважды, что приводит к нежелательному результату для меня.
Вот фактический журнал: в большинстве успешныхВ этом случае LOG выглядит следующим образом: после запуска данных onReceive () будет запущен один раз:
D/ send update value : 3598
D/ send update id : 251
D/ receive ID: 251
D/ receive update value: 3598
Однако иногда, даже когда данные отправляются, onReceive () не принимается сданные (идентификатор 252), однако идентификатор 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)
Как устранить эту проблему, чтобы данные передавались последовательно на основе правильного порядка?