Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android LocalBroadcastReceiver不';不要在一根线里面工作_Android_Broadcastreceiver_Android Broadcast_Localbroadcastmanager - Fatal编程技术网

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);
但是,my
BroadcastReceiver
没有接收任何以这种方式发送的广播


我做错了什么?我是否需要在清单中以不同的方式注册接收器以接收本地广播?要使其正常工作,还需要其他步骤吗?

您是否已将广播接收器注册到
registerReceiver
或清单中


而不是传递
getApplicationContext()
pass
this
,因为
Service
也扩展了
Context

你能试试这种方法吗,我不确定这是否对我有效:所以我通过哪种上下文都不重要?我认为发送和接收都必须使用相同的上下文。这就是为什么我使用了
getApplicationContext
。不,只要您传递相同的广播意图,这并不重要。事实上,一个应用程序可以发送广播,另一个应用程序可以接收广播,因此上下文显然不同。