UI スレッドでサービスを実行します。これは私の最初のアプローチではなく、Android と Java に慣れるための時間がかかりますが、それを並べ替える時間はありません。
問題は、システムが再起動しようとするサービスを破棄するときに発生すると思いますが、開始時に送信された元のインテントが null ポインター例外を引き起こしているため、アクティビティのインスタンスを保存するために何かを行うべきか、サービスで何かを行うべきかわかりませんこの問題を解決するために。
マルチスレッドを回避できれば、今のところ再起動を保証する最も簡単な方法を探しているだけです。以下のコードのセクションには、問題の原因となっている行があります。
log-cat フォーマットについて申し訳ありません
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.d(TAG, "started");
if(deviceId==null){
Log.d(TAG, "in if");
deviceId=intent.getStringExtra("device_id");
contact=intent.getStringExtra("carers_num");
}
Log.d(TAG, "num =" +contact);
Log.d(TAG, "id = "+deviceId);
if(deviceId.equalsIgnoreCase("carersD")){
Log.d(TAG, "The carers device has been selected");
}else if (deviceId.equalsIgnoreCase("patientsD")) {
Log.d(TAG, "The patients device has been selected");
registerListener();
}
return START_STICKY;
}
03-30 13:03:23.983: E/AndroidRuntime(25132): FATAL EXCEPTION: main
03-30 13:03:23.983: E/AndroidRuntime(25132): java.lang.RuntimeException: Unable to start service com.sblyit.finder.LocationService@41f6ee18 with null: java.lang.NullPointerException
03-30 13:03:23.983: E/AndroidRuntime(25132): at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2571)
03-30 13:03:23.983: E/AndroidRuntime(25132): at android.app.ActivityThread.access$2000(ActivityThread.java:140)
03-30 13:03:23.983: E/AndroidRuntime(25132): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1334)
03-30 13:03:23.983: E/AndroidRuntime(25132): at android.os.Handler.dispatchMessage(Handler.java:99)
03-30 13:03:23.983: E/AndroidRuntime(25132): at android.os.Looper.loop(Looper.java:137)
03-30 13:03:23.983: E/AndroidRuntime(25132): at android.app.ActivityThread.main(ActivityThread.java:4921)
03-30 13:03:23.983: E/AndroidRuntime(25132): at java.lang.reflect.Method.invokeNative(Native Method)
03-30 13:03:23.983: E/AndroidRuntime(25132): at java.lang.reflect.Method.invoke(Method.java:511)
03-30 13:03:23.983: E/AndroidRuntime(25132): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
03-30 13:03:23.983: E/AndroidRuntime(25132): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
03-30 13:03:23.983: E/AndroidRuntime(25132): at dalvik.system.NativeStart.main(Native Method)
03-30 13:03:23.983: E/AndroidRuntime(25132): Caused by: java.lang.NullPointerException
03-30 13:03:23.983: E/AndroidRuntime(25132): at com.sblyit.finder.LocationService.onStartCommand(LocationService.java:83)
03-30 13:03:23.983: E/AndroidRuntime(25132): at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2554)
03-30 13:03:23.983: E/AndroidRuntime(25132): ... 10 more