LocalBroadcastReceiver无法在线程内部工作

时间:2013-06-07 04:34:19

标签: android broadcastreceiver android-broadcast localbroadcastmanager

我正在构建一个简单的聊天应用程序。当我收到消息时,我发送了一条广播消息。

由于这是在由服务启动的线程内部运行,因此我将上下文传递给线程。 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中以不同的方式注册接收器以接收本地广播?是否还需要其他步骤才能使其正常工作?

1 个答案:

答案 0 :(得分:1)

您是否在registerReceiver或清单中注册了广播接收器?

而不是传递getApplicationContext()传递this,因为Service也延伸了Context