0

我正在开发一个使用谷歌云消息接收推送通知的应用程序。问题是我在“SplashActivity”中运行 registerReceiver(),我用它来做一些初始工作,在 GCM 服务器上获取和注册。问题是,当活动完成后,它使用 Intent 打开 MainActivity,我收到错误消息:

Activity <package>.SplashActivity has leaked IntentReceiver
<package>.GCMMessageReceiver@40ed1c38 that was originally 
registered here. Are you missing a call to unregisterReceiver()?

在这里做什么?我不想在离开活动时取消注册 IntentReceiver,因为我希望应用程序继续接收推送通知(即使在关闭时)。推荐的方法是什么?

提前致谢 :)

4

2 回答 2

1

如果您从活动中调用 registerReceiver() ,则它与活动的上下文相关联。相反,调用 getApplicationContext().registerReceiver()。

并且...确保您的 BroadcastReciever 对象没有直接绑定到 SplashAcitivty。即,不要使用内部(非静态)类作为 BroadcastReciever 对象。我通常将这些东西远离活动,而是在应用程序单例中进行。

于 2013-09-08T20:08:37.910 回答
0

我希望应用继续接收推送通知(即使关闭)

那你为什么用registerReceiver()?将 放在<reciever>清单中,就像GCM 示例演示的那样

于 2013-09-08T20:09:45.177 回答