GCMRegistrar.onDestroy(上下文)崩溃,Receiver未注册

我应该如何调用GCMRegistrar.onDestroy? 目前我的主要活动包含:

protected void onDestroy() { GCMRegistrar.onDestroy(this); super.onDestroy(); } 

在做注册或取消注册,然后杀死主要活动,我得到这个:

 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 

编辑,从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" /> 

Solutions Collecting From Web of "GCMRegistrar.onDestroy(上下文)崩溃,Receiver未注册"

我想我解决了它。 在做GCMRegistar.register(context)时,我使用了两个不同的上下文。 切换到使用getApplicationContext()而不是这个工作正常。

其他方式。

 GCMRegistrar.onDestroy(getApplicationContext());