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