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

Android 应用程序关闭时接收意图广播,android,android-intent,android-c2dm,broadcast,Android,Android Intent,Android C2dm,Broadcast,我第一次使用C2DM,我正在寻找如何实现以下目标的一般建议: 收到C2DM消息后,我决定: -如果应用程序启动,当前活动将显示“警报弹出窗口”。 -如果应用程序未打开,我想向通知栏发送消息(类似于新电子邮件、短信、twitter等) 我们有一个GlobalBroadcastReceiver扩展了BroadcastReceiver,它实现了public void onReceive(上下文上下文,意图)。这是在AndroidManifest.xml中注册的唯一接收者 所以基本上我们所有的广播都是通

我第一次使用C2DM,我正在寻找如何实现以下目标的一般建议: 收到C2DM消息后,我决定: -如果应用程序启动,当前活动将显示“警报弹出窗口”。 -如果应用程序未打开,我想向通知栏发送消息(类似于新电子邮件、短信、twitter等)

我们有一个
GlobalBroadcastReceiver扩展了BroadcastReceiver
,它实现了
public void onReceive(上下文上下文,意图)
。这是在
AndroidManifest.xml
中注册的唯一接收者
所以基本上我们所有的广播都是通过这个接收器传输的,第一种情况是没有问题的

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

我非常自信已经有很多解决方案了,但是因为我找不到它们,我想我只是错过了一些更大的东西

即使我的应用程序关闭,我如何确保我收到C2DM.receive广播

让您的接收人在舱单中注册

然后:如何通知用户有关传入数据的信息

发出
通知

由于您的接收者不一定知道前台是否有您的活动,因此最好的解决方案是发送您自己的广播
Intent
,但要按顺序发送。让活动为您自己的广播注册一个高优先级
BroadcastReceiver
,并注册另一个清单
BroadcastReceiver
为您自己的广播实施正常优先级
BroadcastReceiver
。如果活动获得广播,它将显示弹出窗口(ick)并中止广播。如果您的“backstop”
BroadcastReceiver
获得广播,它将显示一个
通知
。更详细地介绍这个模式,并演示有序广播的使用

即使我的应用程序关闭,我如何确保我收到C2DM.receive广播

让您的接收人在舱单中注册

然后:如何通知用户有关传入数据的信息

发出
通知


由于您的接收者不一定知道前台是否有您的活动,因此最好的解决方案是发送您自己的广播
Intent
,但要按顺序发送。让活动为您自己的广播注册一个高优先级
BroadcastReceiver
,并注册另一个清单
BroadcastReceiver
为您自己的广播实施正常优先级
BroadcastReceiver
。如果活动获得广播,它将显示弹出窗口(ick)并中止广播。如果您的“backstop”
BroadcastReceiver
获得广播,它将显示一个
通知
。再详细介绍一下这种模式,并演示这种有序广播的使用。

您能详细介绍一下这一部分吗?“让活动为您自己的广播注册一个高优先级的BroadcastReceiver,并让另一个清单注册的BroadcastReceiver为您自己的广播实现一个正常优先级的BroadcastReceiver。”我明天会检查这一点。我需要安静的时间来测试所有这些:)@yoshi:我专门提供了一篇博客文章的超链接和一个示例项目,以提供更多细节。很抱歉反应太晚。在收到你的回答后,我对整个c2dm系统有了一点戏剧性。我喜欢你在文章中描述的模式。以这种方式使用有序广播真是太好了。不管怎样,在阅读之后,我意识到实际上所有的工作都已经完成了。我只是不明白在清单中注册的
BroadcastReceiver
s即使没有运行任何活动也会被执行。甜甜:)你能把这部分再详细一点吗?“让活动为您自己的广播注册一个高优先级的BroadcastReceiver,并让另一个清单注册的BroadcastReceiver为您自己的广播实现一个正常优先级的BroadcastReceiver。”我明天会检查这一点。我需要安静的时间来测试所有这些:)@yoshi:我专门提供了一篇博客文章的超链接和一个示例项目,以提供更多细节。很抱歉反应太晚。在收到你的回答后,我对整个c2dm系统有了一点戏剧性。我喜欢你在文章中描述的模式。以这种方式使用有序广播真是太好了。不管怎样,在阅读之后,我意识到实际上所有的工作都已经完成了。我只是不明白在清单中注册的
BroadcastReceiver
s即使没有运行任何活动也会被执行。甜心:)