gpt4 book ai didi

android - 动态 BroadcastReceivers : LocalBroadcastManager. registerReceiver 与 registerReceiver

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

我正在尝试接收来自具有 2 个不同接收器的服务的广播。一个接收器更新是一个 View ,所以我在 Activity 的 onResume 方法中注册了它。

当应用程序不在前台时,我会使用另一个接收器,以便在后台服务完成时显示系统通知。

下面的代码是我注册接收器的方式:

@Override
protected void onPause() {
// unregister local
unregisterReceiver(localReceiver);

// register remote
registerReceiver(remoteReceiver, filter);
super.onPause();
}

@Override
protected void onResume() {
super.onResume();
// remove remote receiver
// since remote is only registered in onPause it won't be registered during the first onResume call
// so we want to ignore any exceptions
try {
unregisterReceiver(remoteReceiver);
} catch (IllegalArgumentException e) {
Log.e(LOG_TAG, "No receiver registered, could be first time");
}

// add local receiver
registerReceiver(localReceiver, filter);
Log.i(LOG_TAG, "resumed. should be registered");
}

两个接收器在 Activity 类的顶部像这样实例化:

BroadcastReceiver localReceiver = new BroadcastReceiver() { ... };

WaitTimeReceiver remoteReceiver = new WaitTimeReceiver();

服务的 Intent 是:

broadcastIntent = new Intent(Support.SERVICE_BR);
broadcastIntent.addCategory(Intent.CATEGORY_DEFAULT);

// later on sends using
sendBroadcast(broadcastIntent);

Activity 中的 Filter 匹配:

filter.addAction(Support.SERVICE_BR);
filter.addCategory(Intent.CATEGORY_DEFAULT);

以上一切正常,暂停恢复功能按预期工作,但我的问题是为什么 LocalBroadcastManager 没有?

使用 LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(this) 然后调用 lbm.registerReceiver(localReceiver) 没有收到我的任何广播。

为什么 LocalBroadcastManager 没有收到我的任何广播?

最佳答案

LocalBroadcastManager 注册的

BroadcastReceiver 只能接收由 LocalBroadcastManager 发送的广播。 ActivityServicesendBroadcast() 方法发送的广播无法被 LocalBroadcastManager 接收器接收。

改为使用 LocalBroadcastManager#sendBroadcast() 方法。例如:

LocalBroadcastManager.getInstance(this).sendBroadcast(intent)

关于android - 动态 BroadcastReceivers : LocalBroadcastManager. registerReceiver 与 registerReceiver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33715044/

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