0
02-01 14:16:32.054: E/AndroidRuntime(17134): FATAL EXCEPTION: pool-2-thread-2
02-01 14:16:32.054: E/AndroidRuntime(17134): java.lang.NullPointerException
02-01 14:16:32.054: E/AndroidRuntime(17134):    at org.apache.cordova.NativeToJsMessageQueue.addPluginResult(NativeToJsMessageQueue.java:233)
02-01 14:16:32.054: E/AndroidRuntime(17134):    at org.apache.cordova.CordovaWebView.sendPluginResult(CordovaWebView.java:548)
02-01 14:16:32.054: E/AndroidRuntime(17134):    at org.apache.cordova.api.Plugin.sendPluginResult(Plugin.java:110)
02-01 14:16:32.054: E/AndroidRuntime(17134):    at org.apache.cordova.api.Plugin$1.run(Plugin.java:82)
02-01 14:16:32.054: E/AndroidRuntime(17134):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
02-01 14:16:32.054: E/AndroidRuntime(17134):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
02-01 14:16:32.054: E/AndroidRuntime(17134):    at java.lang.Thread.run(Thread.java:856)

我不断收到这个错误。这发生在应用程序首次打开并将设备注册到 Google Cloud Messaging 之后。一切似乎都正常,但是我暂停了应用程序,然后一旦它恢复,它会出于某种原因调用取消注册功能,然后立即崩溃,但随后继续使用 Google Cloud Messaging 重新注册设备,以便我重新进入应用程序如果它没有强制关闭,它应该处于正确的状态。然后,如果我在此之后暂停并恢复应用程序,它就不再强制关闭。

有没有其他人对此有任何经验或对造成这种情况的任何想法?

我使用https://github.com/marknutter/GCM-Cordova实现了 GCM PhoneGap 插件

4

1 回答 1

1

我不确定为什么您的应用程序恢复时您的代码会调用取消注册。

但是当发生这种情况时,我可以修复 NullPointerException:

我调试了 GCM 插件代码,发现 GCMPlugin.java 文件在第 75 行出错。

注销的 if/else 语句没有提供 PluginResult!所以我添加了以下额外的行并且 NullPointerException 消失了:

else if (UNREGISTER.equals(action)) {
  GCMRegistrar.unregister(this.ctx.getContext());
  Log.v(ME + ":" + UNREGISTER, "GCMRegistrar.unregister called ");

  result = new PluginResult(Status.OK); //added line

}
于 2013-03-30T16:46:19.830 回答