0

成功註冊後,我從GCM獲得deviceId。我正在將我的deviceId存儲在SharedPreferences中。在主要活動中,我以onDestroy()方法註銷接收方。 如果我不取消註冊收件人,那麼我得到內存泄漏錯誤。 這些錯誤會影響應用程序嗎? 如果是這樣,那麼我應該何時取消註冊接收器? 我沒有在我的應用程序中註銷按鈕。我們是否應該以gcm(Android)註銷接收器

我甚至懷疑,如果我們取消註冊接收器,我們能否收到推送通知?

請幫我一把。我完全困惑。

回答

0

如果您從GCM服務註銷,您將不再收到推送通知。

+0

但如果我不取消註冊,那麼我得到內存泄漏errors.Will這些錯誤影響我的應用程序。 – AndroidGeek 2013-03-27 08:09:30

+0

您將不得不詳細說明您正在討論的「內存泄漏錯誤」。你在logcat中看到這個嗎?如果是這樣,你會發布它嗎? – 2013-03-27 08:20:35

+0

MainActivity泄漏了最初在此處註冊的IntentReceiver MainActivity $ 1 @ 416321f0。你是否錯過了對unregisterReceiver()的調用? – AndroidGeek 2013-03-27 08:39:14

0

你可能不想取消註冊。它將在您卸載應用程序後最終取消註冊。在此之前,你只是想保持它,所以你可以收到通知。

2

我認爲從GCM服務註銷和註銷在活動中聲明的廣播接收者之間存在誤解。

錯誤的類型你貼:

MainActivity已泄漏IntentReceiver MainActivity $ -1 @,最初這裏註冊416321f0。你缺少unregisterReceiver()的調用

看來,當你使用一個BroadcastReceiver從GCMIntentService收到Intents當你在onMessage()得到一個消息等。

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

在這種情況下,是的,你必須調用於氣孔內存泄漏錯誤。

此操作不會取消推送通知,它只會停止boadcastreceiver監聽這些意圖。 GCMIntentService仍然會收到消息。

+0

沒錯。當我在onMessage()上收到消息時,我使用廣播接收器接收GCMIntentService的意圖,非常感謝。 – AndroidGeek 2013-05-14 11:20:36

相關問題