public int onStartCommand(Intent intent, int flags, int startId) {
if (intent.getExtras() != null) {
String temp = intent.getStringExtra("key");
temp1 = Integer.parseInt(temp);
counter = temp1;
}
}
我正在将数据传递给服务,当应用程序打开时它可以正常工作,但是一旦我关闭应用程序,它就会崩溃。.我已经尝试了很多事情,并且对android还是陌生的。任何帮助,将不胜感激
提前致谢。
这是日志
03-21 15:35:07.868 21818-21818/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.cs442.shash5259.assignment_6, PID: 21818
java.lang.RuntimeException: Unable to start service com.cs442.shash5259.assignment_6.Myservice@9d88461 with null: java.lang.NullPointerException: Attempt to invoke virtual method 'android.os.Bundle android.content.Intent.getExtras()' on a null object reference
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3045)
at android.app.ActivityThread.-wrap17(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1452)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.os.Bundle android.content.Intent.getExtras()' on a null object reference
at com.cs442.shash5259.assignment_6.Myservice.onStartCommand(Myservice.java:55)
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3028)
at android.app.ActivityThread.-wrap17(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1452)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
纵观日志,很显然,在你的意图对象onStartCommand
是null
,当应用程序被关闭。
查看Service源代码中的文档,其中提到:
在
Intent
提供给onStartCommand
可以为null,如果它的进程已经走了之后,正在重新启动该服务,它以前返回除了什么START_STICKY_COMPATIBILITY
。
您可以根据应用程序的要求以至少2种不同的方式处理此问题。
1.您可以在onStartCommand中修改以下代码:
public int onStartCommand(Intent intent, int flags, int startId) {
if (intent!= null) {
String temp = intent.getStringExtra("key");
temp1 = Integer.parseInt(temp);
counter = temp1;
}
}
这样可以防止崩溃,但不会更新 counter
2.Or您可能会返回START_REDELIVER_INTENT
在onStartCommand()
服务回调,使整个意图被送到下面的重新启动,从而防止Intent
被null
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句