2

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

由于这是在服务启动的线程内运行的,因此我将上下文传递给线程。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);

_contextgetApplicationContext()我传递给线程的构造函数。我已receiver在我的清单文件中注册。

所以这一切正常,我的接收者成功接收到消息。

现在我想更改它以使用LocalBroadcastManager. 所以我所做的只是_context.sendBroadcast(i)

LocalBroadcastManager.getInstance(_context).sendBroadcast(i);

但是我BroadcastReceiver没有收到任何以这种方式发送的广播。

我究竟做错了什么?我是否需要在 Manifest 中以不同的方式注册接收器才能接收本地广播?是否需要任何其他步骤才能使其工作?

4

1 回答 1

1

Did you register your broadcast receiver with registerReceiver or in manifest?

Instead of passing getApplicationContext() pass this, because Service extends Context, too.

于 2013-06-07T05:38:26.873 回答