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