0

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

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

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

4

3 回答 3

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)void 内存泄漏错误。

此操作不会取消推送通知,它只会停止广播接收器以侦听这些意图。GCMIntentService 仍然会收到消息。

于 2013-05-10T18:05:33.950 回答
0

如果您从 GCM 服务中注销,您将不再收到推送通知。

于 2013-03-27T07:36:39.380 回答
0

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

于 2013-03-27T07:37:24.923 回答