2

我有 GCM 完全工作。我的问题是,当我使用 android BACK 键退出我的应用程序时,我看到调用了 onDestroy() 并且为了避免泄漏,我取消了 gcm 的接收器,因此调用了 onUnregister()。但我希望能够在开机时注册一次 gcm(启动完成?),然后能够随时收到通知。我知道当谷歌可能刷新注册意图时,我仍然需要处理。但我不清楚是否需要在其 onCreate() 中创建一个新服务来注册 gcm?现在我在主要活动的 onCreate() 中注册 gcm。

谢谢你的帮助!!

贾斯汀

4

1 回答 1

2

如果不查看您的代码,这有点难以分辨,但您不应该在每次离开应用程序时从 GCM 注销。典型的 GCM App 生命周期(如果您使用 GCM jar)如下所示:

  1. 应用程序启动并检查它是否具有 GCM 注册 ID(这意味着它已向 GCM 注册)然后检查它是否已向您的服务器注册。
  2. 如果它有一个registrationID,但尚未在您的服务器上注册,它会尝试这样做。
  3. 如果它没有registrationID,它会尝试向GCM注册,然后当它获得registrationID时,它将尝试向您的服务器注册

当他们关闭从接收通知中注销的首选项时,数字 4 可能会从 GCM 注销。

看看 Google 的客户端示例 DemoActivity:http ://code.google.com/p/gcm/source/browse/samples/gcm-demo-client/src/com/google/android/gcm/demo/app/DemoActivity .java

请注意,它们不会从 GCM 中取消注册。如果您遵循他们的示例,您将在设备启动后收到通知,而无需自己做任何其他事情。

于 2012-12-12T21:38:47.777 回答