我有谷歌GCM作爲本機實現,並在應用程序在前臺運行時正常工作。但是,如果應用程序在閒置一段時間後沒有運行,則當推送消息進入時,即使檢測到,也會導致崩潰。我沒有類PushReceiver.java,所以這必須由CN1注入。這裏是堆棧跟蹤:當應用程序未運行時,推送消息會導致崩潰
02-14 22:50:14.796: W/System.err(21026): java.io.EOFException
02-14 22:50:14.796: W/System.err(21026): at libcore.io.Streams.readFully(Streams.java:83)
02-14 22:50:14.796: W/System.err(21026): at java.io.DataInputStream.readFully(DataInputStream.java:99)
02-14 22:50:14.796: W/System.err(21026): at java.io.DataInputStream.decodeUTF(DataInputStream.java:178)
02-14 22:50:14.796: W/System.err(21026): at java.io.DataInputStream.decodeUTF(DataInputStream.java:173)
02-14 22:50:14.796: W/System.err(21026): at java.io.DataInputStream.readUTF(DataInputStream.java:169)
02-14 22:50:14.796: W/System.err(21026): at com.codename1.impl.android.AndroidImplementation.getPendingPush(AndroidImplementation.java:381)
02-14 22:50:14.796: W/System.err(21026): at com.rixma.mobile.PushReceiver.handleMessage(PushReceiver.java:162)
02-14 22:50:14.796: W/System.err(21026): at com.rixma.mobile.PushReceiver.onReceive(PushReceiver.java:62)
02-14 22:50:14.796: W/System.err(21026): at android.app.ActivityThread.handleReceiver(ActivityThread.java:3011)
02-14 22:50:14.796: W/System.err(21026): at android.app.ActivityThread.access$1800(ActivityThread.java:177)
02-14 22:50:14.796: W/System.err(21026): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1507)
02-14 22:50:14.796: W/System.err(21026): at android.os.Handler.dispatchMessage(Handler.java:102)
02-14 22:50:14.796: W/System.err(21026): at android.os.Looper.loop(Looper.java:135)
02-14 22:50:14.796: W/System.err(21026): at android.app.ActivityThread.main(ActivityThread.java:5910)
02-14 22:50:14.796: W/System.err(21026): at java.lang.reflect.Method.invoke(Native Method)
02-14 22:50:14.806: W/System.err(21026): at java.lang.reflect.Method.invoke(Method.java:372)
02-14 22:50:14.806: W/System.err(21026): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405)
02-14 22:50:14.806: W/System.err(21026): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200)
02-14 22:50:14.806: D/AndroidRuntime(21026): Shutting down VM
02-14 22:50:14.806: E/AndroidRuntime(21026): FATAL EXCEPTION: main
02-14 22:50:14.806: E/AndroidRuntime(21026): Process: com.rixma.mobile, PID: 21026
02-14 22:50:14.806: E/AndroidRuntime(21026): java.lang.RuntimeException: Unable to start receiver com.rixma.mobile.PushReceiver: java.lang.NullPointerException: Attempt to get length of null array
02-14 22:50:14.806: E/AndroidRuntime(21026): at android.app.ActivityThread.handleReceiver(ActivityThread.java:3018)
02-14 22:50:14.806: E/AndroidRuntime(21026): at android.app.ActivityThread.access$1800(ActivityThread.java:177)
02-14 22:50:14.806: E/AndroidRuntime(21026): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1507)
02-14 22:50:14.806: E/AndroidRuntime(21026): at android.os.Handler.dispatchMessage(Handler.java:102)
02-14 22:50:14.806: E/AndroidRuntime(21026): at android.os.Looper.loop(Looper.java:135)
02-14 22:50:14.806: E/AndroidRuntime(21026): at android.app.ActivityThread.main(ActivityThread.java:5910)
02-14 22:50:14.806: E/AndroidRuntime(21026): at java.lang.reflect.Method.invoke(Native Method)
02-14 22:50:14.806: E/AndroidRuntime(21026): at java.lang.reflect.Method.invoke(Method.java:372)
02-14 22:50:14.806: E/AndroidRuntime(21026): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405)
02-14 22:50:14.806: E/AndroidRuntime(21026): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200)
02-14 22:50:14.806: E/AndroidRuntime(21026): Caused by: java.lang.NullPointerException: Attempt to get length of null array
02-14 22:50:14.806: E/AndroidRuntime(21026): at com.rixma.mobile.PushReceiver.handleMessage(PushReceiver.java:163)
02-14 22:50:14.806: E/AndroidRuntime(21026): at com.rixma.mobile.PushReceiver.onReceive(PushReceiver.java:62)
02-14 22:50:14.806: E/AndroidRuntime(21026): at android.app.ActivityThread.handleReceiver(ActivityThread.java:3011)
02-14 22:50:14.806: E/AndroidRuntime(21026): ... 9 more
請指點如何解決這個,因爲它似乎我沒有在崩潰的代碼的任何控制,它似乎在CN1代碼中發生的事情。我應該使用這樣的推送通知來喚醒一個'死'的應用程序,只要它不被用戶強行阻止。