Моего приложения имеет подкласс вещательный приемник: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 я получил одну трансляцию для аналогичной настройки. Что мне не хватает?
Возможно, вы регистрируете несколько приемников. – CommonsWare
Проверено для нескольких регистраций в коде на основе сообщений здесь. Зарегистрируйтесь только один раз. – MrMagoo
Вы не показываете свой код, в котором вы используете 'LocalBroadcastManager' для отправки широковещательной передачи. Я предполагаю, что вы используете 'sendBroadcast()'. Если это так, и ваш код поддерживает его по потоку, временно переключитесь на 'sendBroadcastSync()', а затем установите контрольную точку в свой метод 'onReceive()'. Вы увидите как код, отправляющий широковещательную передачу, так и код, получающий широковещательную передачу, и вы сможете определить, какая сторона получает больше времени, чем это необходимо. Например, вы сможете увидеть, зарегистрировано ли у вас несколько записей «LocationBroadcastReceiver». – CommonsWare