应用程序关闭时接收意图广播

问题描述:

我第一次使用C2DM,并且正在寻求一般性建议,我如何实现以下功能: 在收到C2DM消息后,我决定: - 如果应用程序在当前活动将显示“警报弹出”。 - 如果程序没有打开,我想将消息发送到通知栏(类似于新的电子邮件,短信,微博等)应用程序关闭时接收意图广播

我们有一个GlobalBroadcastReceiver extends BroadcastReceiver它实现public void onReceive(Context context, Intent intent)。这是只有收件人登记在AndroidManifest.xml
所以基本上我们所有的广播都是通过这个接收器传输的,第一种情况是没有问题的。

但是,我想知道如何解决第二个问题。我如何确保即使在我的应用程序关闭时我也能收到C2DM.RECEIVE广播,然后:如何才能通知用户有关传入数据?

我超级自信已经有很多的解决方案,但因为我找不到它们,我想我只是缺少一些更大的图片。

我怎样才能确保我收到,即使我的应用程序被关闭

一个C2DM.RECEIVE广播让你的接收机清单,per the C2DM documentation注册。

那么:如何才能通知用户有关输入数据?

提高Notification

由于您的接收器不一定知道您的前景是否存在活动,所以最好的解决方案是发送您自己的广播Intent,但需要订购。让活动为您自己的广播注册一个高优先级BroadcastReceiver,并让其他清单注册BroadcastReceiver为您自己的广播实施普通优先级BroadcastReceiver。如果活动获得广播,它将显示您的弹出窗口(ick)并中止广播。如果您的“backstop”BroadcastReceiver获得广播,则显示NotificationHere is a blog post有关此模式的更详细信息,以及here is a sample project演示了这种有序广播的使用。

+0

请您详细说明这个部分请详细一点吗? “让活动为您自己的广播注册高优先级的BroadcastReceiver,并让另一个清单注册的BroadcastReceiver为您自己的广播实现普通优先级的BroadcastReceiver。”我明天也会检查一下。我需要安静的时间来测试所有这些:) – yoshi 2012-04-27 15:07:40

+0

@yoshi:我专门提供了超链接到博客文章和一个示例项目,以提供更多细节。 – CommonsWare 2012-04-27 15:11:11

+0

对不起,迟到的回应。就在收到你的回答后,我对整个c2dm系统有了一点戏剧性。我喜欢你在文章中描述的模式。真的很好用这种方式使用有序的广播。无论如何,阅读后我意识到所有的工作已经完成。我只是不明白,即使没有活动运行,清单中注册的BroadcastReceiver也会执行。甜蜜:) – yoshi 2012-05-03 19:38:19