Я создаю простое приложение для чата. Когда я получаю сообщение, я отправляю широковещательное сообщение.
Поскольку это выполняется внутри потока, запущенного службой, я передаю контекст потоку. MyConnection
— это поток, расширяющий класс.
@Override
public void onCreate() {
super.onCreate();
connection = new MyConnection(getApplicationContext());
}
Итак, внутри потока, когда я получаю сообщение, я делаю это...
Intent i = new Intent();
i.putExtra("from", message.getFrom());
i.putExtra("message", message.getBody());
i.setAction(MyService.MESSAGE_RECEIVED);
_context.sendBroadcast(i);
_context
— это getApplicationContext()
, который я передал конструктору потока. У меня есть receiver
, зарегистрированный в моем файле манифеста.
Итак, все работает, и мой получатель успешно получает сообщение.
Теперь я хочу изменить это, чтобы использовать LocalBroadcastManager
. Итак, что я сделал, так это просто изменил _context.sendBroadcast(i)
на
LocalBroadcastManager.getInstance(_context).sendBroadcast(i);
Однако мой BroadcastReceiver
не получает ни одной из передач, отправленных таким образом.
Что я делаю не так? Нужно ли регистрировать ресивер другим способом в манифесте для приема местных трансляций? Требуются ли какие-либо другие шаги, чтобы заставить его работать?