我们应该以gcm(Android)取消注册接收器吗?

时间:2013-03-27 07:32:51

标签: android android-intent push-notification google-cloud-messaging server-push

成功注册后,我从GCM获得deviceId。我将deviceId存储在SharedPreferences中。在主要活动中,我使用onDestroy()方法取消注册接收器。 如果我没有取消注册接收器,那么我会收到内存泄漏错误。 这些错误是否会影响应用程序? 如果是这样,那么什么时候我应该取消注册接收器? 我的应用程序中没有注销按钮。

我甚至怀疑如果我们取消注册接收器,我们是否能够接收推送通知?

请帮帮我。我完全糊涂了。

3 个答案:

答案 0 :(得分:2)

我认为GCM服务的注销与注册活动中宣布的广播接收者之间存在误解。

您发布的错误类型:

  

MainActivity泄露了最初在这里注册的IntentReceiver MainActivity $ 1 @ 416321f0。你是否错过了对unregisterReceiver()的调用

当您在Intents收到消息时,使用广播接收器从GCMIntentService接收onMessage()时看起来像。

private final BroadcastReceiver myBroadcastReceiver = new BroadcastReceiver() {
   @Override
   public void onReceive(Context context, Intent intent) {
   ....
   }
}

在这种情况下,是的,您必须将unregisterReceiver(myBroadcastReceiver)调用为内存泄漏错误。

此操作不会取消推送通知,它只会阻止boadcastreceiver监听这些意图。 GCMIntentService仍会收到消息。

答案 1 :(得分:0)

如果您从GCM服务取消注册,您将不再收到推送通知。

答案 2 :(得分:0)

您可能不想取消注册。卸载应用程序后,它将取消注册(最终)。在此之前,您只想保持它,以便接收通知。