【问题标题】: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 有什么问题?

标签: android android-broadcast android-pendingintent


【解决方案1】:

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

这是不可能的。

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

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

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

【讨论】:

  • 感谢您的澄清。
  • 有没有办法让我拥有像PendingIntent.UPDATE_CURRENT 这样的设施,使用LocalBroadcastManager?基本上,当有很多事件同时发生时,我只想发送一个LocalBroadcast,而不是为每个事件发送一个。我将如何使用LocalBroadcast 来实现这一点。
  • @500865: PendingIntent 不能与 LocalBroadcastManager 一起使用。 PendingIntent 旨在跨流程边界工作; LocalBroadcastManager 旨在跨进程边界工作。
  • 这就是为什么我的BroadcastReceiver 没有收到广播。使用常规的BroadcastManager解决。
猜你喜欢
  • 1970-01-01
  • 2014-11-03
  • 1970-01-01
  • 1970-01-01
  • 2016-09-08
  • 2017-07-11
  • 2014-02-12
  • 2021-02-05
  • 2014-02-11
相关资源
最近更新 更多