Android LocalBroadcastReceiver不';不要在一根线里面工作
我正在构建一个简单的聊天应用程序。当我收到一条消息时,我发送了一条广播消息 由于这是在由服务启动的线程内运行的,因此我将上下文传递给该线程Android LocalBroadcastReceiver不';不要在一根线里面工作,android,broadcastreceiver,android-broadcast,localbroadcastmanager,Android,Broadcastreceiver,Android Broadcast,Localbroadcastmanager,我正在构建一个简单的聊天应用程序。当我收到一条消息时,我发送了一条广播消息 由于这是在由服务启动的线程内运行的,因此我将上下文传递给该线程MyConnection是一个类扩展线程 @Override public void onCreate() { super.onCreate(); connection = new MyConnection(getApplicationContext()); } 所以在线程内部,当我收到消息时,我会这样做 Intent i =
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);
\u context
是传递给线程构造函数的getApplicationContext()。我已经在我的清单文件中注册了接收者
这一切都正常,我的接收者成功地收到了信息
现在我想将其更改为使用LocalBroadcastManager
。因此,我所做的只是将\u context.sendBroadcast(I)
更改为
LocalBroadcastManager.getInstance(_context).sendBroadcast(i);
但是,myBroadcastReceiver
没有接收任何以这种方式发送的广播
我做错了什么?我是否需要在清单中以不同的方式注册接收器以接收本地广播?要使其正常工作,还需要其他步骤吗?您是否已将广播接收器注册到registerReceiver
或清单中
而不是传递getApplicationContext()
passthis
,因为Service
也扩展了Context
。你能试试这种方法吗,我不确定这是否对我有效:所以我通过哪种上下文都不重要?我认为发送和接收都必须使用相同的上下文。这就是为什么我使用了getApplicationContext
。不,只要您传递相同的广播意图,这并不重要。事实上,一个应用程序可以发送广播,另一个应用程序可以接收广播,因此上下文显然不同。