成功注册后,我从GCM获得deviceId
。我将deviceId
存储在SharedPreferences
中。在主要活动中,我使用onDestroy()
方法取消注册接收器。
如果我没有取消注册接收器,那么我会收到内存泄漏错误。
这些错误是否会影响应用程序?
如果是这样,那么什么时候我应该取消注册接收器?
我的应用程序中没有注销按钮。
我甚至怀疑如果我们取消注册接收器,我们是否能够接收推送通知?
请帮帮我。我完全糊涂了。
答案 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)
您可能不想取消注册。卸载应用程序后,它将取消注册(最终)。在此之前,您只想保持它,以便接收通知。