2016-02-14 28 views
1

我有谷歌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代碼中發生的事情。我應該使用這樣的推送通知來喚醒一個'死'的應用程序,只要它不被用戶強行阻止。

回答

1

你沒有添加你的代碼,但只要你的接收過程與活動有關係,當應用程序不在前臺時會有問題,因爲它們已經死了。 您應該處理後臺服務中的所有進程。

0

內置於Codename One的推送支持假定您使用的是Codename One推送。主要原因是跨設備的推送實現的碎片化,iOS在這裏完全不同。

相關問題