После того, как onReceive () не удалось запустить один раз, следующие данные для отправки будут запущены дважды? - PullRequest
0 голосов
/ 21 июня 2019

Я использую 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)

Как устранить эту проблему, чтобы данные передавались последовательно на основе правильного порядка?

...