1

Service内からa を開始しActivity、Activity をそれにバインドします。タスク マネージャーからアプリを強制終了しようとすると、ServiceonStartCommand()メソッドが呼び出され、NullPointerException が呼び出されます。onStartCommand() が呼び出される理由がわかりません。

Service は今のところ onStartCommand() だけオーバーライドされています:

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    Bundle bundle = intent.getExtras();  //This is line 24
    //some stuff to get strings from bundle
    return super.onStartCommand(intent, flags, startId);
}

例外:

07-16 14:49:02.190: E/AndroidRuntime(24607): FATAL EXCEPTION: main
07-16 14:49:02.190: E/AndroidRuntime(24607): java.lang.RuntimeException: Unable to start service com.app.GameService@420edf78 with null: java.lang.NullPointerException
07-16 14:49:02.190: E/AndroidRuntime(24607):    at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2782)
07-16 14:49:02.190: E/AndroidRuntime(24607):    at android.app.ActivityThread.access$2000(ActivityThread.java:152)
07-16 14:49:02.190: E/AndroidRuntime(24607):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1385)
07-16 14:49:02.190: E/AndroidRuntime(24607):    at android.os.Handler.dispatchMessage(Handler.java:99)
07-16 14:49:02.190: E/AndroidRuntime(24607):    at android.os.Looper.loop(Looper.java:137)
07-16 14:49:02.190: E/AndroidRuntime(24607):    at android.app.ActivityThread.main(ActivityThread.java:5328)
07-16 14:49:02.190: E/AndroidRuntime(24607):    at java.lang.reflect.Method.invokeNative(Native Method)
07-16 14:49:02.190: E/AndroidRuntime(24607):    at java.lang.reflect.Method.invoke(Method.java:511)
07-16 14:49:02.190: E/AndroidRuntime(24607):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
07-16 14:49:02.190: E/AndroidRuntime(24607):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
07-16 14:49:02.190: E/AndroidRuntime(24607):    at dalvik.system.NativeStart.main(Native Method)
07-16 14:49:02.190: E/AndroidRuntime(24607): Caused by: java.lang.NullPointerException
07-16 14:49:02.190: E/AndroidRuntime(24607):    at com.app.GameService.onStartCommand(GameService.java:24)
07-16 14:49:02.190: E/AndroidRuntime(24607):    at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2765)
07-16 14:49:02.190: E/AndroidRuntime(24607):    ... 10 more
4

2 に答える 2

0

onStartCommand() から Service.Start_not_sticky を返すことが必要な場合があります。私はあなたのシナリオを知りません。ただ試してみてください。

これは、サービスの終了/再起動の異なるモードをよりよく理解するのに役立ちます - http://developer.android.com/reference/android/app/Service.html#START_NOT_STICKY

于 2013-10-24T07:35:17.273 に答える