0

Моего приложения имеет подкласс вещательный приемник:Android Зефир BroadcastReceiver прием нескольких передач для каждой отправка

public class LocationBroadcastReceiver extends BroadcastReceiver { 
    LocationBroadcastReceiver.class.getSimpleName(); 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      if (intent.getAction().equals(Constants.BROADCAST_LOCATION_ACTION)) { 
       Bundle extras = intent.getExtras(); 
       Log.d(LOG_TAG, "BCAST LAT = " + extras.getDouble("LAT") + " LON = " + extras.getDouble("LON")); 
      } 
} 

Сформировать сообщение журнала в службе, которая посылает в эфир и сообщение журнала выше. Получение нескольких трансляций для отправки одного широковещательного сообщения.

Я динамически регистрации приемника, используя следующие:

mLocateBcast = new LocationBroadcastReceiver(); 
     IntentFilter locationFilter = new IntentFilter(); 
     locationFilter.addAction(Constants.BROADCAST_LOCATION_ACTION); 

LocalBroadcastManager.getInstance(mContext).registerReceiver(mLocateBcast,locationFilter); 

У меня нет приемника, определенный в моем манифесте. В предыдущих версиях Android я получил одну трансляцию для аналогичной настройки. Что мне не хватает?

+2

Возможно, вы регистрируете несколько приемников. – CommonsWare

+0

Проверено для нескольких регистраций в коде на основе сообщений здесь. Зарегистрируйтесь только один раз. – MrMagoo

+0

Вы не показываете свой код, в котором вы используете 'LocalBroadcastManager' для отправки широковещательной передачи. Я предполагаю, что вы используете 'sendBroadcast()'. Если это так, и ваш код поддерживает его по потоку, временно переключитесь на 'sendBroadcastSync()', а затем установите контрольную точку в свой метод 'onReceive()'. Вы увидите как код, отправляющий широковещательную передачу, так и код, получающий широковещательную передачу, и вы сможете определить, какая сторона получает больше времени, чем это необходимо. Например, вы сможете увидеть, зарегистрировано ли у вас несколько записей «LocationBroadcastReceiver». – CommonsWare

ответ

0

С Marshmallow вызывается обратный вызов onLocationChanged, когда значение LocationRequest setInterval истекает независимо от того, произошло ли фактическое изменение местоположения.

Не ожидал такого поведения.

Смежные вопросы