我正在构建一个简单的聊天应用程序。当我收到消息时,我发送了一条广播消息。
由于这是在由服务启动的线程内部运行,因此我将上下文传递给线程。 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
没有收到以这种方式发送的任何广播。
我做错了什么?我是否需要在Manifest中以不同的方式注册接收器以接收本地广播?是否还需要其他步骤才能使其正常工作?
答案 0 :(得分:1)
您是否在registerReceiver
或清单中注册了广播接收器?
而不是传递getApplicationContext()
传递this
,因为Service
也延伸了Context
。