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 に答える