GCMRegistrar.onDestroy(context) crashing, Receiver not registered
android, google-cloud-messaging
Solution
I think I solved it. When doing GCMRegistar.register(context), I used two different contexts. Switch to using getApplicationContext() instead of this worked fine.
Problem
How should I call GCMRegistrar.onDestroy? Currently my main activity contains this: ``` protected void onDestroy() { GCMRegistrar.onDestroy(this); super.onDestroy(); } ``` And after doing a registration or unregistration and then killing the main activity I am getting this: ``` 08-13 15:43:56.459: E/AndroidRuntime(2389): FATAL EXCEPTION: main 08-13 15:43:56.459: E/AndroidRuntime(2389): java.lang.RuntimeException: Unable to destroy activity {com.test.android/com.test.android.activities.MainActivity}: java.lang.IllegalArgumentException: Receiver not registered: com.google.android.gcm.GCMBroadcastReceiver@40673a10 08-13 15:43:56.459: E/AndroidRuntime(2389): at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3090) 08-13 15:43:56.459: E/AndroidRuntime(2389): at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3155) 08-13 15:43:56.459: E/AndroidRuntime(2389): at android.app.ActivityThread.access$2100(ActivityThread.java:132) 08-13 15:43:56.459: E/AndroidRuntime(2389): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1071) 08-13 15:43:56.459: E/AndroidRuntime(2389): at android.os.Handler.dispatchMessage(Handler.java:99) 08-13 15:43:56.459: E/AndroidRuntime(2389): at android.os.Looper.loop(Looper.java:150) 08-13 15:43:56.459: E/AndroidRuntime(2389): at android.app.ActivityThread.main(ActivityThread.java:4277) 08-13 15:43:56.459: E/AndroidRuntime(2389): at java.lang.reflect.Method.invokeNative(Native Method) 08-13 15:43:56.459: E/AndroidRuntime(2389): at java.lang.reflect.Method.invoke(Method.java:507) 08-13 15:43:56.459: E/AndroidRuntime(2389): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 08-13 15:43:56.459: E/AndroidRuntime(2389): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 08-13 15:43:56.459: E/AndroidRuntime(2389): at dalvik.system.NativeStart.main(Native Method) 08-13 15:43:56.459: E/AndroidRuntime(2389): Caused by: java.lang.IllegalArgumentException: Receiver not registered: com.google.android.gcm.GCMBroadcastReceiver@40673a10 08-13 15:43:56.459: E/AndroidRuntime(2389): at android.app.LoadedApk.forgetReceiverDispatcher(LoadedApk.java:634) 08-13 15:43:56.459: E/AndroidRuntime(2389): at android.app.ContextImpl.unregisterReceiver(ContextImpl.java:880) 08-13 15:43:56.459: E/AndroidRuntime(2389): at android.content.Contexttester.unregisterReceiver(Contexttester.java:331) 08-13 15:43:56.459: E/AndroidRuntime(2389): at com.google.android.gcm.GCMRegistrar.onDestroy(GCMRegistrar.java:249) 08-13 15:43:56.459: E/AndroidRuntime(2389): at com.test.android.activities.MainActivity.onDestroy(MainActivity.java:407) 08-13 15:43:56.459: E/AndroidRuntime(2389): at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3072) 08-13 15:43:56.459: E/AndroidRuntime(2389): ... 11 more ``` Edit, from the mainfest: ``` <receiver android:name=".receivers.PushReceiver" android:permission="com.google.android.c2dm.permission.SEND" > <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> <category android:name="com.test.android" /> </intent-filter> </receiver> <service android:name=".services.PushService" /> ```