gpt4 book ai didi

android - LocalBroadcastReceiver 在线程内部不起作用

转载 作者:行者123 更新时间:2023-11-29 01:52:48 25 4
gpt4 key购买 nike

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

由于这是在服务启动的线程内运行,我将上下文传递给线程。 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()。我在 list 文件中注册了 receiver

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

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

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

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

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

最佳答案

您是使用 registerReceiver 还是在 list 中注册您的广播接收器?

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

关于android - LocalBroadcastReceiver 在线程内部不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16976282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com