您可以在本地广播中使用未决意图吗?

Posted

技术标签:

【中文标题】您可以在本地广播中使用未决意图吗?【英文标题】:Can you use pending intents with localbroadcasts? 【发布时间】:2013-03-25 07:39:11 【问题描述】:

我有兴趣在本地广播中使用未决意图。 为了清楚起见,我使用以下内容注册接收器和发送广播:android.support.v4.content.LocalBroadcastManager

我在一个有效的服务中有一个本地广播接收器。我正在尝试从包含可点击项目的自定义通知布局发送本地广播。

本地广播接收器 - 只接收简单的动作意图。 我尝试过这样的事情无济于事:

Intent backintent = new Intent("GOTO_START_BROADCAST");
PendingIntent backIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, backintent, 0);
RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.custom_notification);
contentView.setOnClickPendingIntent(R.id.imageView1, backIntent);

【问题讨论】:

在这个用例中使用 IntentService 而不是 LocalBroadcast 有什么问题? 【参考方案1】:

我有兴趣在本地广播中使用未决意图。

这是不可能的。

PendingIntent 背后的意义在于允许其他进程执行您请求的操作,例如发送广播。

LocalBroadcastManager 背后的意义在于让广播在你的进程中

因此,PendingIntent 可以发出常规广播,但不能通过LocalBroadcastManager 发出。

【讨论】:

感谢您的澄清。 有没有办法让我拥有像PendingIntent.UPDATE_CURRENT 这样的设施,使用LocalBroadcastManager?基本上,当有很多事件同时发生时,我只想发送一个LocalBroadcast,而不是为每个事件发送一个。我将如何使用LocalBroadcast 来实现这一点。 @500865: PendingIntent 不能与 LocalBroadcastManager 一起使用。 PendingIntent 旨在跨流程边界工作; LocalBroadcastManager 旨在跨进程边界工作。 这就是为什么我的BroadcastReceiver 没有收到广播。使用常规的BroadcastManager解决。

以上是关于您可以在本地广播中使用未决意图吗?的主要内容,如果未能解决你的问题,请参考以下文章

您可以在 C# 本地函数中使用三元运算符吗?

在 Android 12/API 31 中,地理围栏不适用于 IMMUTABLE 未决意图。为啥?

Android:我的部分演员在未决意图中迷失了

Android:未调用的未决意图具有多个警报的打盹

在本地测试 UDP 广播

您可以设置本地文档根目录吗?或者在哪里?