我正在开发一个使用Google Cloud Messaging接收推送通知的应用程序。问题是我在“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,因为我希望应用程序继续接收推送通知(即使在关闭时)。建议的方法是什么?
提前致谢:)
答案 0 :(得分:1)
如果从活动中调用registerReceiver(),则它与Activity的上下文相关联。 相反,调用getApplicationContext()。registerReceiver()。
并确保您的BroadcastReciever对象不直接与SplashAcitivty绑定。即,不要使用内部(非静态)类作为BroadcastReciever对象。 我通常会将这些内容远离活动,而是在应用程序单例中进行。
答案 1 :(得分:0)
我希望应用继续接收推送通知(即使已关闭)
那你为什么要使用registerReceiver()
?将<reciever>
放入清单,例如the GCM sample demonstrates。